@deephaven/chart 0.6.1-fixed-deps.2 → 0.6.1-markdownnotebooks.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@ import dh from '@deephaven/jsapi-shim';
10
10
  import ChartTheme from "./ChartTheme.js";
11
11
  var log = Log.module('ChartUtils');
12
12
  var DAYS = Object.freeze(dh.calendar.DayOfWeek.values());
13
- var BUSINESS_COLUMN_TYPE = 'io.deephaven.db.tables.utils.DBDateTime';
13
+ var BUSINESS_COLUMN_TYPE = 'io.deephaven.time.DateTime';
14
14
  var MILLIS_PER_HOUR = 3600000;
15
15
  var NANOS_PER_MILLI = 1000000;
16
16
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ChartUtils.js"],"names":["Log","TableUtils","dh","ChartTheme","log","module","DAYS","Object","freeze","calendar","DayOfWeek","values","BUSINESS_COLUMN_TYPE","MILLIS_PER_HOUR","NANOS_PER_MILLI","ChartUtils","getPlotlyChartType","plotStyle","isBusinessTime","plot","SeriesPlotStyle","SCATTER","LINE","BAR","STACKED_BAR","PIE","HISTOGRAM","OHLC","getPlotlyChartMode","getPlotlyProperty","sourceType","SourceType","X","Y","TIME","Z","X_LOW","X_HIGH","Y_LOW","Y_HIGH","OPEN","HIGH","LOW","CLOSE","SIZE","LABEL","COLOR","Error","getPlotlySeriesOrientation","series","sources","length","axis","type","AxisType","ORIENTATION","HORIZONTAL","VERTICAL","getPlotlyErrorBars","x","xLow","xHigh","array","map","value","i","arrayminus","symmetric","getPlotlyDateFormat","formatter","columnType","formatPattern","tickformat","replace","ticksuffix","dataFormatter","getColumnTypeFormatter","dhTimeZone","showTimeZone","i18n","DateTimeFormat","format","Date","automargin","convertNumberPrefix","prefix","getPlotlyNumberFormat","subpatterns","split","placeholderDigits","zeroDigits","decimalDigits","optionalDecimalDigits","numberType","percentSign","suffix","match","paddingLength","isCommaSeparated","indexOf","comma","plotlyNumberType","decimalLength","trimOption","tickprefix","getPlotlyAxisFormat","source","axisFormat","isDateType","addTickSpacing","isNumberType","formatType","AxisFormatType","CATEGORY","gapBetweenMajorTicks","updatedFormat","tickSpacing","Math","tickmode","dtick","getSourceForAxis","chart","j","getSeriesVisibility","name","settings","hiddenSeries","includes","getHiddenLabels","makeSeriesData","mode","orientation","makeSeriesDataFromSeries","axisTypeMap","seriesVisibility","lineColor","shapeColor","some","businessCalendar","getChartType","seriesData","addSourcesToSeriesData","addStylingToSeriesData","seriesDataParam","k","dataAttributeName","axisProperty","getAxisPropertyName","axes","get","axisIndex","axisIndexString","marker","line","width","AREA","fill","STACKED_AREA","stackgroup","STEP","shape","assign","color","paper_bgcolor","increasing","ohlc_increasing","decreasing","ohlc_decreasing","textinfo","outsidetextfont","title_color","visible","getAxisFormats","figure","axisFormats","Map","nullFormat","charts","groupArray","axisType","typeAxes","axisLayoutProperty","getAxisLayoutProperty","has","debug","set","rangebreaks","businessPeriods","businessDays","holidays","timeZone","calendarTimeZone","formatterTimeZone","timeZoneDiff","standardOffset","push","createRangeBreakValuesFromHolidays","forEach","period","pattern","bounds","periodToDecimal","close","open","createBoundsFromDays","weekendBounds","size","getAxisSide","axisPosition","AxisPosition","BOTTOM","TOP","LEFT","RIGHT","getChartForSeries","getLayoutRanges","layout","ranges","keys","filter","key","range","autorange","updateLayoutAxes","layoutParam","plotWidth","plotHeight","getRangeParser","xAxisSize","max","MIN_AXIS_SIZE","min","AXIS_SIZE_PX","MAX_AXIS_SIZE","DEFAULT_AXIS_SIZE","yAxisSize","left","bottom","top","right","axisPositionMap","rightAxes","LEGEND_WIDTH_PX","MAX_LEGEND_SIZE","axisTypes","isYAxis","plotSize","makeLayoutAxis","layoutAxis","updateLayoutAxis","rangeParser","rangeStart","rangeEnd","layoutAxisParam","axisSize","title","text","label","side","position","overlaying","positionAxes","sideIndex","anchor","leftAxes","domain","bottomAxes","topAxes","Number","businessDaysInt","day","nonBusinessDaysInt","reopenDays","Set","closed","adjustedDay","add","boundsArray","closedDay","fullHolidays","partialHolidays","holiday","createPartialHoliday","createFullHoliday","adjustDateForTimeZone","date","toString","dateString","closedPeriods","rangeBreaks","startClose","endClose","dvalue","unwrapValue","wrapValue","property","reduce","result","item","group","updateRanges","asDate","DATE_FORMAT","asNumber","substr","parse","tzFormat","estimatedOffset","estimatedDate","offset","gridcolor","linecolor","rangeslider","showline","ticklen","tickcolor","tickfont","zerolinecolor","font","showgrid","zerolinewidth","makeDefaultLayout","autosize","colorway","family","yanchor","pad","DEFAULT_TITLE_PADDING","y","legend","margin","DEFAULT_MARGIN","xaxis","yaxis","datarevision","dehydrateSettings","hydrateSettings","titleFromSettings","xAxis","join","makeFigureSettings","table","settingsAxis","NUMBER","yAxis","chartType","ChartType","XY","dataSources","columnName","l","r","t","b"],"mappings":"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","sourcesContent":["import Log from '@deephaven/log';\nimport { TableUtils } from '@deephaven/iris-grid';\nimport dh from '@deephaven/jsapi-shim';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('ChartUtils');\n\nconst DAYS = Object.freeze(dh.calendar.DayOfWeek.values());\n\nconst BUSINESS_COLUMN_TYPE = 'io.deephaven.db.tables.utils.DBDateTime';\n\nconst MILLIS_PER_HOUR = 3600000;\n\nconst NANOS_PER_MILLI = 1000000;\n\nclass ChartUtils {\n static DEFAULT_AXIS_SIZE = 0.15;\n\n static MIN_AXIS_SIZE = 0.025;\n\n static MAX_AXIS_SIZE = 0.2;\n\n static AXIS_SIZE_PX = 75;\n\n static LEGEND_WIDTH_PX = 50;\n\n static MAX_LEGEND_SIZE = 0.25;\n\n static ORIENTATION = Object.freeze({\n HORIZONTAL: 'h',\n VERTICAL: 'v',\n });\n\n static DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSS';\n\n static DEFAULT_MARGIN = Object.freeze({ l: 60, r: 50, t: 30, b: 60, pad: 0 });\n\n static DEFAULT_TITLE_PADDING = Object.freeze({ t: 8 });\n\n static SUBTITLE_LINE_HEIGHT = 25;\n\n /**\n * Converts the Iris plot style into a plotly chart type\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle\n * @param {boolean} isBusinessTime If the plot is using business time for an axis\n */\n static getPlotlyChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n // scattergl mode is more performant, but doesn't support the rangebreaks we need for businessTime calendars\n return !isBusinessTime ? 'scattergl' : 'scatter';\n case dh.plot.SeriesPlotStyle.LINE:\n // There is also still some artifacting bugs with scattergl: https://github.com/plotly/plotly.js/issues/3522\n // The artifacting only occurs on line plots, which we can draw with fairly decent performance using SVG paths\n // Once the above plotly issue is fixed, scattergl should be used here (when !isBusinessTime)\n return 'scatter';\n case dh.plot.SeriesPlotStyle.BAR:\n case dh.plot.SeriesPlotStyle.STACKED_BAR:\n return 'bar';\n\n case dh.plot.SeriesPlotStyle.PIE:\n return 'pie';\n\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'histogram';\n\n case dh.plot.SeriesPlotStyle.OHLC:\n return 'ohlc';\n\n default:\n return null;\n }\n }\n\n /**\n * Converts the Iris plot style into a plotly chart mode\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle.*\n */\n static getPlotlyChartMode(plotStyle) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'markers';\n case dh.plot.SeriesPlotStyle.LINE:\n return 'lines';\n default:\n return null;\n }\n }\n\n /**\n * Get the property to set on the series data for plotly\n * @param {dh.plot.SeriesPlotStyle} plotStyle The plot style of the series\n * @param {dh.plot.SourceType} sourceType The source type for the series\n */\n static getPlotlyProperty(plotStyle, sourceType) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.PIE:\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'labels';\n case dh.plot.SourceType.Y:\n return 'values';\n default:\n break;\n }\n break;\n case dh.plot.SeriesPlotStyle.OHLC:\n switch (sourceType) {\n case dh.plot.SourceType.TIME:\n return 'x';\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'x';\n case dh.plot.SourceType.Y:\n return 'y';\n case dh.plot.SourceType.Z:\n return 'z';\n case dh.plot.SourceType.X_LOW:\n return 'xLow';\n case dh.plot.SourceType.X_HIGH:\n return 'xHigh';\n case dh.plot.SourceType.Y_LOW:\n return 'yLow';\n case dh.plot.SourceType.Y_HIGH:\n return 'yHigh';\n case dh.plot.SourceType.TIME:\n return 'time';\n case dh.plot.SourceType.OPEN:\n return 'open';\n case dh.plot.SourceType.HIGH:\n return 'high';\n case dh.plot.SourceType.LOW:\n return 'low';\n case dh.plot.SourceType.CLOSE:\n return 'shape';\n case dh.plot.SourceType.SIZE:\n return 'size';\n case dh.plot.SourceType.LABEL:\n return 'label';\n case dh.plot.SourceType.COLOR:\n return 'color';\n default:\n throw new Error('Unrecognized source type', sourceType);\n }\n }\n\n static getPlotlySeriesOrientation(series) {\n const { sources } = series;\n if (sources.length === 2 && sources[0].axis.type === dh.plot.AxisType.Y) {\n return ChartUtils.ORIENTATION.HORIZONTAL;\n }\n\n return ChartUtils.ORIENTATION.VERTICAL;\n }\n\n /**\n * Generate the plotly error bar data from the passed in data.\n * Iris passes in the values as absolute, plotly needs them as relative.\n * @param {Array[Number]} x The main data array\n * @param {Array[Number]} xLow The absolute low values\n * @param {Array[Number]} xHigh\n *\n * @returns {Object} The error_x object required by plotly, or null if none is required\n */\n static getPlotlyErrorBars(x, xLow, xHigh) {\n const array = xHigh.map((value, i) => value - x[i]);\n const arrayminus = xLow.map((value, i) => x[i] - value);\n return {\n type: 'data',\n symmetric: false,\n array,\n arrayminus,\n };\n }\n\n static getPlotlyDateFormat(formatter, columnType, formatPattern) {\n const tickformat =\n formatPattern == null\n ? null\n : formatPattern\n .replace('%', '%%')\n .replace(/S{9}/g, '%9f')\n .replace(/S{8}/g, '%8f')\n .replace(/S{7}/g, '%7f')\n .replace(/S{6}/g, '%6f')\n .replace(/S{5}/g, '%5f')\n .replace(/S{4}/g, '%4f')\n .replace(/S{3}/g, '%3f')\n .replace(/S{2}/g, '%2f')\n .replace(/S{1}/g, '%1f')\n .replace(/y{4}/g, '%Y')\n .replace(/y{2}/g, '%y')\n .replace(/M{4}/g, '%B')\n .replace(/M{3}/g, '%b')\n .replace(/M{2}/g, '%m')\n .replace(/M{1}/g, '%-m')\n .replace(/E{4,}/g, '%A')\n .replace(/E{1,}/g, '%a')\n .replace(/d{2}/g, '%d')\n .replace(/([^%]|^)d{1}/g, '$1%-d')\n .replace(/H{2}/g, '%H')\n .replace(/h{2}/g, '%I')\n .replace(/h{1}/g, '%-I')\n .replace(/m{2}/g, '%M')\n .replace(/s{2}/g, '%S')\n .replace(\"'T'\", 'T')\n .replace(' z', ''); // timezone added as suffix if necessary\n\n let ticksuffix = null;\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter.dhTimeZone != null && dataFormatter.showTimeZone) {\n ticksuffix = dh.i18n.DateTimeFormat.format(\n ' z',\n new Date(),\n dataFormatter.dhTimeZone\n );\n }\n\n return { tickformat, ticksuffix, automargin: true };\n }\n\n static convertNumberPrefix(prefix) {\n return prefix.replace(/\\u00A4\\u00A4/g, 'USD').replace(/\\u00A4/g, '$');\n }\n\n static getPlotlyNumberFormat(formatter, columnType, formatPattern) {\n if (!formatPattern) {\n return null;\n }\n\n // We translate java formatting: https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html\n // Into d3 number formatting: https://github.com/d3/d3-format\n // We can't translate number formatting exactly, but should be able to translate the most common cases\n // First split it into the subpatterns; currently only handling the positive subpattern, ignoring the rest\n const subpatterns = formatPattern.split(';');\n const [\n ,\n prefix,\n placeholderDigits,\n zeroDigits,\n ,\n decimalDigits,\n optionalDecimalDigits,\n numberType,\n percentSign,\n suffix,\n ] = subpatterns[0].match(\n /^([^#,0.]*)([#,]*)([0,]*)(\\.?)(0*)(#*)(E?0*)(%?)(.*)/\n );\n\n const paddingLength = zeroDigits.replace(',', '').length;\n const isCommaSeparated =\n placeholderDigits.indexOf(',') >= 0 || zeroDigits.indexOf(',') >= 0;\n const comma = isCommaSeparated ? ',' : '';\n const plotlyNumberType = numberType ? 'e' : 'f';\n const type = percentSign || plotlyNumberType;\n const decimalLength = decimalDigits.length + optionalDecimalDigits.length;\n // IDS-4565 Plotly uses an older version of d3 which doesn't support the trim option or negative brackets\n // If plotly updates it's d3 version, this should be re-enabled\n // const trimOption = optionalDecimalDigits.length > 0 ? '~' : '';\n const trimOption = '';\n\n const tickformat = `0${paddingLength}${comma}.${decimalLength}${trimOption}${type}`;\n const tickprefix = ChartUtils.convertNumberPrefix(prefix);\n // prefix and suffix are processed the same\n const ticksuffix = ChartUtils.convertNumberPrefix(suffix);\n\n return { tickformat, tickprefix, ticksuffix, automargin: true };\n }\n\n /**\n * Gets the plotly axis formatting information from the source passed in\n * @param {dh.plot.Source} source The Source to get the formatter information from\n * @param {Formatter} formatter The current formatter for formatting data\n */\n static getPlotlyAxisFormat(source, formatter = null) {\n const { axis, columnType } = source;\n const { formatPattern } = axis;\n\n let axisFormat = null;\n if (TableUtils.isDateType(columnType)) {\n axisFormat = ChartUtils.getPlotlyDateFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, true);\n } else if (TableUtils.isNumberType(columnType)) {\n axisFormat = ChartUtils.getPlotlyNumberFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, false);\n }\n\n if (axis.formatType === dh.plot.AxisFormatType.CATEGORY) {\n if (axisFormat) {\n axisFormat.type = 'category';\n } else {\n axisFormat = { type: 'category', tickformat: null, ticksuffix: null };\n }\n }\n\n return axisFormat;\n }\n\n /**\n * Adds tick spacing for an axis that has gapBetweenMajorTicks defined.\n *\n * @param {object} axisFormat the current axis format, may be null\n * @param {object} axis the current axis\n * @param {boolean} isDateType indicates if the columns is a date type\n */\n static addTickSpacing(axisFormat, axis, isDateType) {\n const { gapBetweenMajorTicks } = axis;\n if (gapBetweenMajorTicks > 0) {\n const updatedFormat = axisFormat || {};\n let tickSpacing = gapBetweenMajorTicks;\n if (isDateType) {\n // Need to convert from nanoseconds to milliseconds\n tickSpacing = gapBetweenMajorTicks / NANOS_PER_MILLI;\n }\n if (axis.log) {\n tickSpacing = Math.log(tickSpacing);\n }\n // Note that tickmode defaults to 'auto'\n updatedFormat.tickmode = 'linear';\n updatedFormat.dtick = tickSpacing;\n return updatedFormat;\n }\n\n return axisFormat;\n }\n\n /**\n * Retrieve the data source for a given axis in a chart\n * @param {dh.plot.Chart} chart The chart to get the source for\n * @param {dh.plot.Axis} axis The axis to find the source for\n * @returns {dh.plot.Source} The first source matching this axis\n */\n static getSourceForAxis(chart, axis) {\n for (let i = 0; i < chart.series.length; i += 1) {\n const series = chart.series[i];\n for (let j = 0; j < series.sources.length; j += 1) {\n const source = series.sources[j];\n if (source.axis === axis) {\n return source;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get visibility setting for the series object\n * @param {string} name The series name to get the visibility for\n * @param {object} settings Chart settings\n * @returns {boolean|string} True for visible series and 'legendonly' for hidden\n */\n static getSeriesVisibility(name, settings) {\n if (settings?.hiddenSeries?.includes(name)) {\n return 'legendonly';\n }\n return true;\n }\n\n /**\n * Get hidden labels array from chart settings\n * @param {object} settings Chart settings\n * @returns {string[]} Array of hidden series names\n */\n static getHiddenLabels(settings) {\n if (settings?.hiddenSeries) {\n return [...settings.hiddenSeries];\n }\n return [];\n }\n\n /**\n * Create a default series data object. Apply styling to the object afterward.\n * @returns {Object} A simple series data object with no styling\n */\n static makeSeriesData(\n type,\n mode,\n name,\n orientation = ChartUtils.ORIENTATION.VERTICAL\n ) {\n return { type, mode, name, orientation };\n }\n\n /**\n * Create a data series (trace) for use with plotly\n * @param {dh.plot.Series} series The series to create the series data with\n * @param {Map<dh.plot.AxisType, dh.plot.Axis[]>} axisTypeMap The map of axes grouped by type\n * @param {boolean|string} seriesVisibility Visibility setting for the series\n * @returns {Object} The series data (trace) object for use with plotly.\n */\n static makeSeriesDataFromSeries(series, axisTypeMap, seriesVisibility) {\n const { name, plotStyle, lineColor, shapeColor, sources } = series;\n\n const isBusinessTime = sources.some(source => source.axis.businessCalendar);\n const type = ChartUtils.getChartType(plotStyle, isBusinessTime);\n const mode = ChartUtils.getPlotlyChartMode(plotStyle);\n const orientation = ChartUtils.getPlotlySeriesOrientation(series);\n\n const seriesData = ChartUtils.makeSeriesData(type, mode, name, orientation);\n\n ChartUtils.addSourcesToSeriesData(\n seriesData,\n plotStyle,\n sources,\n axisTypeMap\n );\n\n ChartUtils.addStylingToSeriesData(\n seriesData,\n plotStyle,\n lineColor,\n shapeColor,\n seriesVisibility\n );\n\n return seriesData;\n }\n\n static addSourcesToSeriesData(\n seriesDataParam,\n plotStyle,\n sources,\n axisTypeMap\n ) {\n const seriesData = seriesDataParam;\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis, type: sourceType } = source;\n\n const dataAttributeName = ChartUtils.getPlotlyProperty(\n plotStyle,\n sourceType\n );\n seriesData[dataAttributeName] = [];\n\n const axisProperty = ChartUtils.getAxisPropertyName(axis.type);\n const axes = axisTypeMap.get(axis.type);\n const axisIndex = axes.indexOf(axis);\n if (axisProperty != null) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n seriesData[`${axisProperty}axis`] = `${axisProperty}${axisIndexString}`;\n }\n }\n }\n\n static addStylingToSeriesData(\n seriesDataParam,\n plotStyle,\n lineColor = null,\n shapeColor = null,\n seriesVisibility = null\n ) {\n const seriesData = seriesDataParam;\n // Add some empty objects so we can fill them in later with details without checking for existence\n seriesData.marker = { line: {} }; // border line width on markers\n seriesData.line = {\n width: 1, // default line width for lines, should eventually be able to override\n };\n\n if (plotStyle === dh.plot.SeriesPlotStyle.AREA) {\n seriesData.fill = 'tozeroy';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STACKED_AREA) {\n seriesData.stackgroup = 'stack';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STEP) {\n seriesData.line.shape = 'hv'; // plot.ly horizontal then vertical step styling\n } else if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n // The default histfunc in plotly is 'count', but the data passed up from the API provides explicit x/y values and bins\n // Since it's converted to bar, just set the widths of each bar\n seriesData.width = [];\n Object.assign(seriesData.marker.line, {\n color: ChartTheme.paper_bgcolor,\n width: 1,\n });\n } else if (plotStyle === dh.plot.SeriesPlotStyle.OHLC) {\n seriesData.increasing = {\n line: { color: ChartTheme.ohlc_increasing },\n };\n seriesData.decreasing = {\n line: { color: ChartTheme.ohlc_decreasing },\n };\n } else if (plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n seriesData.textinfo = 'label+percent';\n seriesData.outsidetextfont = { color: ChartTheme.title_color };\n }\n\n if (lineColor != null) {\n if (plotStyle === dh.plot.SeriesPlotStyle.BAR) {\n seriesData.marker.color = lineColor;\n } else {\n seriesData.line.color = lineColor;\n }\n }\n\n if (shapeColor != null) {\n seriesData.marker.color = shapeColor;\n }\n\n // Skipping pie charts\n // Pie slice visibility is configured in chart layout instead of series data\n if (seriesVisibility != null && plotStyle !== dh.plot.SeriesPlotStyle.PIE) {\n seriesData.visible = seriesVisibility;\n }\n }\n\n /**\n * Retrieve the axis formats from the provided figure.\n * Currently defaults to just the x/y axes.\n * @param {dh.plot.Figure} figure The figure to get the axis formats for\n * @param {Formatter} formatter The formatter to use when getting the axis format\n * @returns {Map<string, object>} A map of axis layout property names to axis formats\n */\n static getAxisFormats(figure, formatter) {\n const axisFormats = new Map();\n const nullFormat = { tickformat: null, ticksuffix: null };\n\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n const axisTypeMap = ChartUtils.groupArray(chart.axes, 'type');\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n const { sources } = series;\n\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis } = source;\n const { type: axisType } = axis;\n const typeAxes = axisTypeMap.get(axisType);\n const axisIndex = typeAxes.indexOf(axis);\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n\n if (axisFormats.has(axisLayoutProperty)) {\n log.debug(`${axisLayoutProperty} already added.`);\n } else {\n log.debug(`Adding ${axisLayoutProperty} to axisFormats.`);\n const axisFormat = ChartUtils.getPlotlyAxisFormat(\n source,\n formatter\n );\n if (axisFormat === null) {\n axisFormats.set(axisLayoutProperty, nullFormat);\n } else {\n axisFormats.set(axisLayoutProperty, axisFormat);\n\n const { businessCalendar } = axis;\n if (businessCalendar) {\n axisFormat.rangebreaks = [];\n const {\n businessPeriods,\n businessDays,\n holidays,\n timeZone: calendarTimeZone,\n } = businessCalendar;\n const formatterTimeZone = formatter?.getColumnTypeFormatter(\n BUSINESS_COLUMN_TYPE\n )?.dhTimeZone;\n const timeZoneDiff = formatterTimeZone\n ? (calendarTimeZone.standardOffset -\n formatterTimeZone.standardOffset) /\n 60\n : 0;\n if (holidays.length > 0) {\n axisFormat.rangebreaks.push(\n ...ChartUtils.createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n businessPeriods.forEach(period =>\n axisFormat.rangebreaks.push({\n pattern: 'hour',\n bounds: [\n ChartUtils.periodToDecimal(period.close) + timeZoneDiff,\n ChartUtils.periodToDecimal(period.open) + timeZoneDiff,\n ],\n })\n );\n // If there are seven business days, then there is no weekend\n if (businessDays.length < DAYS.length) {\n ChartUtils.createBoundsFromDays(businessDays).forEach(\n weekendBounds =>\n axisFormat.rangebreaks.push({\n pattern: 'day of week',\n bounds: weekendBounds,\n })\n );\n }\n }\n\n if (axisFormats.size === chart.axes.length) {\n return axisFormats;\n }\n }\n }\n }\n }\n }\n\n return axisFormats;\n }\n\n static getChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n // When reading data from the `Figure`, it already provides bins and values, so rather than using\n // plot.ly to calculate the bins and sum values, just convert it to a bar chart\n return 'bar';\n default:\n return ChartUtils.getPlotlyChartType(plotStyle, isBusinessTime);\n }\n }\n\n /**\n * Return the plotly axis property name\n * @param {dh.plot.AxisType} axisType The axis type to get the property name for\n */\n static getAxisPropertyName(axisType) {\n switch (axisType) {\n case dh.plot.AxisType.X:\n return 'x';\n case dh.plot.AxisType.Y:\n return 'y';\n default:\n return null;\n }\n }\n\n /**\n * Returns the plotly \"side\" value for the provided axis position\n * @param {dh.plot.AxisPosition} axisPosition The Iris AxisPosition of the axis\n */\n static getAxisSide(axisPosition) {\n switch (axisPosition) {\n case dh.plot.AxisPosition.BOTTOM:\n return 'bottom';\n case dh.plot.AxisPosition.TOP:\n return 'top';\n case dh.plot.AxisPosition.LEFT:\n return 'left';\n case dh.plot.AxisPosition.RIGHT:\n return 'right';\n default:\n return null;\n }\n }\n\n /**\n * Retrieve the chart that contains the passed in series from the figure\n * @param {dh.plot.Figure} figure The figure to retrieve the chart from\n * @param {dh.plot.Series} series The series to get the chart for\n */\n static getChartForSeries(figure, series) {\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n for (let j = 0; j < chart.series.length; j += 1) {\n if (series === chart.series[j]) {\n return chart;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get an object mapping axis to their ranges\n * @param {object} layout The plotly layout object to get the ranges from\n * @returns {object} An object mapping the axis name to it's range\n */\n static getLayoutRanges(layout) {\n const ranges = {};\n const keys = Object.keys(layout).filter(key => key.indexOf('axis') >= 0);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (layout[key] && layout[key].range && !layout[key].autorange) {\n // Only want to add the range if it's not autoranged\n ranges[key] = [...layout[key].range];\n }\n }\n\n return ranges;\n }\n\n /**\n * Updates the axes positions and sizes in the layout object provided.\n * If the axis did not exist in the layout previously, it is created and added.\n * Any axis that no longer exists in axes is removed.\n * With Downsampling enabled, will also update the range on the axis itself as appropriate\n * @param {object} layoutParam The layout object to update\n * @param {dh.plot.Axis[]} axes The axes to update the layout with\n * @param {number} plotWidth The width of the plot to calculate the axis sizes for\n * @param {number} plotHeight The height of the plot to calculate the axis sizes for\n * @param {func} getRangeParser A function to retrieve the range parser for a given axis\n */\n static updateLayoutAxes(\n layoutParam,\n axes,\n plotWidth = 0,\n plotHeight = 0,\n getRangeParser = null\n ) {\n const xAxisSize =\n plotWidth > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotHeight,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n const yAxisSize =\n plotHeight > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotWidth,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n\n // Adjust the bounds based on where the legend is\n // For now, always assume the legend is shown on the right\n const bounds = {\n left: 0,\n bottom: 0,\n top: 1,\n right: 1,\n };\n const axisPositionMap = ChartUtils.groupArray(axes, 'position');\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n if (rightAxes.length > 0) {\n if (plotWidth > 0) {\n bounds.right =\n 1 -\n Math.max(\n 0,\n Math.min(\n ChartUtils.LEGEND_WIDTH_PX / plotWidth,\n ChartUtils.MAX_LEGEND_SIZE\n )\n );\n } else {\n bounds.right = 1 - ChartUtils.DEFAULT_AXIS_SIZE;\n }\n }\n\n const layout = layoutParam;\n const axisTypeMap = ChartUtils.groupArray(axes, 'type');\n const axisTypes = [...axisTypeMap.keys()];\n for (let j = 0; j < axisTypes.length; j += 1) {\n const axisType = axisTypes[j];\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n if (axisProperty != null) {\n const typeAxes = axisTypeMap.get(axisType);\n const isYAxis = axisType === dh.plot.AxisType.Y;\n const plotSize = isYAxis ? plotHeight : plotWidth;\n let axisIndex = 0;\n for (axisIndex = 0; axisIndex < typeAxes.length; axisIndex += 1) {\n const axis = typeAxes[axisIndex];\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n if (layout[axisLayoutProperty] == null) {\n layout[axisLayoutProperty] = ChartUtils.makeLayoutAxis(axisType);\n }\n\n const layoutAxis = layout[axisLayoutProperty];\n ChartUtils.updateLayoutAxis(\n layoutAxis,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n );\n const { range, autorange } = layoutAxis;\n if (getRangeParser && range && !autorange) {\n const rangeParser = getRangeParser(axis);\n const [rangeStart, rangeEnd] = rangeParser(range);\n\n log.debug(\n 'Setting downsample range',\n plotSize,\n rangeStart,\n rangeEnd\n );\n\n axis.range(plotSize, rangeStart, rangeEnd);\n } else {\n axis.range(plotSize);\n }\n }\n\n let axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n while (layout[axisLayoutProperty] != null) {\n delete layout[axisLayoutProperty];\n\n axisIndex += 1;\n axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n }\n }\n }\n }\n\n static getAxisLayoutProperty(axisProperty, axisIndex) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n return `${axisProperty}axis${axisIndexString}`;\n }\n\n /**\n * Updates the layout axis object in place\n * @param {object} layoutAxisParam The plotly layout axis param\n * @param {dh.plot.Axis} axis The Iris Axis to update the plotly layout with\n * @param {number} axisIndex The type index for this axis\n * @param {Map<dh.plot.AxisPosition, dh.plot.Axis>} axisPositionMap All the axes mapped by position\n * @param {number} axisSize The size of each axis in percent\n * @param {object} bounds The bounds of the axes domains\n */\n static updateLayoutAxis(\n layoutAxisParam,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n ) {\n const isYAxis = axis.type === dh.plot.AxisType.Y;\n const axisSize = isYAxis ? yAxisSize : xAxisSize;\n const layoutAxis = layoutAxisParam;\n layoutAxis.title.text = axis.label;\n if (axis.log) {\n layoutAxis.type = 'log';\n }\n layoutAxis.side = ChartUtils.getAxisSide(axis.position);\n if (axisIndex > 0) {\n layoutAxis.overlaying = ChartUtils.getAxisPropertyName(axis.type);\n\n const positionAxes = axisPositionMap.get(axis.position);\n const sideIndex = positionAxes.indexOf(axis);\n if (sideIndex > 0) {\n layoutAxis.anchor = 'free';\n\n if (axis.position === dh.plot.AxisPosition.RIGHT) {\n layoutAxis.position =\n bounds.right + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.TOP) {\n layoutAxis.position =\n bounds.top + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.BOTTOM) {\n layoutAxis.position =\n bounds.bottom + (positionAxes.length - sideIndex + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.LEFT) {\n layoutAxis.position =\n bounds.left + (positionAxes.length - sideIndex + 1) * axisSize;\n }\n }\n } else if (axis.type === dh.plot.AxisType.X) {\n const leftAxes = axisPositionMap.get(dh.plot.AxisPosition.LEFT) || [];\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n const left = Math.max(\n bounds.left,\n bounds.left + (leftAxes.length - 1) * yAxisSize\n );\n const right = Math.min(\n bounds.right - (rightAxes.length - 1) * yAxisSize,\n bounds.right\n );\n layoutAxis.domain = [left, right];\n } else if (axis.type === dh.plot.AxisType.Y) {\n const bottomAxes = axisPositionMap.get(dh.plot.AxisPosition.BOTTOM) || [];\n const topAxes = axisPositionMap.get(dh.plot.AxisPosition.TOP) || [];\n const bottom = Math.max(\n bounds.bottom,\n bounds.bottom + (bottomAxes.length - 1) * xAxisSize\n );\n const top = Math.min(\n bounds.top - (topAxes.length - 1) * xAxisSize,\n bounds.top\n );\n layoutAxis.domain = [bottom, top];\n }\n }\n\n /**\n * Converts an open or close period to a declimal. e.g '09:30\" to 9.5\n *\n * @param {String} period the open or close value of the period\n */\n static periodToDecimal(period) {\n const values = period.split(':');\n return Number(values[0]) + Number(values[1] / 60);\n }\n\n /**\n * Creates range break bounds for plotly from business days.\n * For example a standard business week of ['MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY']\n * will result in [[6,1]] meaning close on Saturday and open on Monday.\n * If you remove Wednesday from the array, then you get two closures [[6, 1], [3, 4]]\n *\n * @param {Array} businessDays the days to display on the x-axis\n */\n static createBoundsFromDays(businessDays) {\n const businessDaysInt = businessDays.map(day => DAYS.indexOf(day));\n const nonBusinessDaysInt = DAYS.filter(\n day => !businessDays.includes(day)\n ).map(day => DAYS.indexOf(day));\n // These are the days when business reopens (e.g. Monday after a weekend)\n const reopenDays = new Set();\n nonBusinessDaysInt.forEach(closed => {\n for (let i = closed + 1; i < closed + DAYS.length; i += 1) {\n const adjustedDay = i % DAYS.length;\n if (businessDaysInt.includes(adjustedDay)) {\n reopenDays.add(adjustedDay);\n break;\n }\n }\n });\n const boundsArray = [];\n // For each reopen day, find the furthest previous closed day\n reopenDays.forEach(open => {\n for (let i = open - 1; i > open - DAYS.length; i -= 1) {\n const adjustedDay = i < 0 ? i + DAYS.length : i;\n if (businessDaysInt.includes(adjustedDay)) {\n const closedDay = (adjustedDay + 1) % 7;\n boundsArray.push([closedDay, open]);\n break;\n }\n }\n });\n return boundsArray;\n }\n\n /**\n * Creates an array of range breaks for all holidays.\n *\n * @param {Array} holidays an array of holidays\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n ) {\n const fullHolidays = [];\n const partialHolidays = [];\n holidays.forEach(holiday => {\n if (holiday.businessPeriods.length > 0) {\n partialHolidays.push(\n ...ChartUtils.createPartialHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n } else {\n fullHolidays.push(\n ChartUtils.createFullHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n });\n return [{ values: fullHolidays }, ...partialHolidays];\n }\n\n /**\n * Creates the range break value for a full holiday. A full holiday is day that has no business periods.\n *\n * @param {Holiday} holiday the full holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createFullHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n return ChartUtils.adjustDateForTimeZone(\n `${holiday.date.toString()} 00:00:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n );\n }\n\n /**\n * Creates the range break for a partial holiday. A partial holiday is holiday with business periods\n * that are different than the default business periods.\n *\n * @param {Holiday} holiday the partial holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createPartialHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n // If a holiday has business periods {open1, close1} and {open2, close2}\n // This will generate range breaks for:\n // closed from 00:00 to open1\n // closed from close1 to open2\n // closed from close2 to 23:59:59.999999\n const dateString = holiday.date.toString();\n const closedPeriods = ['00:00'];\n holiday.businessPeriods.forEach(period => {\n closedPeriods.push(period.open);\n closedPeriods.push(period.close);\n });\n // To go up to 23:59:59.999999, we calculate the dvalue using 24 - close\n closedPeriods.push('24:00');\n\n const rangeBreaks = [];\n for (let i = 0; i < closedPeriods.length; i += 2) {\n const startClose = closedPeriods[i];\n const endClose = closedPeriods[i + 1];\n // Skip over any periods where start and close are the same (zero hours)\n if (startClose !== endClose) {\n const values = [\n ChartUtils.adjustDateForTimeZone(\n `${dateString} ${startClose}:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n ),\n ];\n const dvalue =\n MILLIS_PER_HOUR *\n (ChartUtils.periodToDecimal(endClose) -\n ChartUtils.periodToDecimal(startClose));\n rangeBreaks.push({ values, dvalue });\n }\n }\n return rangeBreaks;\n }\n\n /**\n * Adjusts a date string from the calendar time zone to the formatter time zone.\n *\n * @param {string} dateString the date string\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static adjustDateForTimeZone(\n dateString,\n calendarTimeZone,\n formatterTimeZone\n ) {\n if (\n formatterTimeZone &&\n formatterTimeZone.standardOffset !== calendarTimeZone.standardOffset\n ) {\n return ChartUtils.unwrapValue(\n ChartUtils.wrapValue(\n dateString,\n BUSINESS_COLUMN_TYPE,\n calendarTimeZone\n ),\n formatterTimeZone\n );\n }\n return dateString;\n }\n\n /**\n * Groups an array and returns a map\n * @param {object[]} array The object to group\n * @param {string} property The property name to group by\n * @returns {Map<object, object>} A map containing the items grouped by their values for the property\n */\n static groupArray(array, property) {\n return array.reduce((result, item) => {\n const key = item[property];\n const group = result.get(key) || [];\n group.push(item);\n result.set(key, group);\n return result;\n }, new Map());\n }\n\n /**\n * Update\n */\n static updateRanges() {}\n\n /**\n * Unwraps a value provided from API to a value plotly can understand\n * Eg. Unwraps DateWrapper, LongWrapper objects.\n */\n static unwrapValue(value, timeZone = null) {\n if (value != null) {\n if (value.asDate) {\n return dh.i18n.DateTimeFormat.format(\n ChartUtils.DATE_FORMAT,\n value,\n timeZone\n );\n }\n\n if (value.asNumber) {\n return value.asNumber();\n }\n }\n\n return value;\n }\n\n /**\n *\n * @param {any} value The value to wrap up\n * @param {string} columnType The type of column this value is from\n * @param {dh.i18n.TimeZone} timeZone The time zone if applicable\n */\n static wrapValue(value, columnType, timeZone = null) {\n if (TableUtils.isDateType(columnType) && typeof value === 'string') {\n // Need to limit the format to the actual length of the string range set in plotly\n // Otherwise parse will fail\n const text = value;\n const format = ChartUtils.DATE_FORMAT.substr(0, value.length);\n const date = dh.i18n.DateTimeFormat.parse(format, text);\n if (!timeZone) {\n return date;\n }\n\n // IDS-5994 Due to date parsing, time zone, and daylight savings shenanigans, we need\n // to pass the actual offset with the time to have it parse correctly.\n // However, the offset can change based on the date because of Daylight Savings\n // So we end up parsing the date multiple times. And curse daylight savings.\n const tzFormat = `${format} Z`;\n const estimatedOffset = dh.i18n.DateTimeFormat.format(\n 'Z',\n date,\n timeZone\n );\n const estimatedDate = dh.i18n.DateTimeFormat.parse(\n tzFormat,\n `${text} ${estimatedOffset}`\n );\n const offset = dh.i18n.DateTimeFormat.format(\n 'Z',\n estimatedDate,\n timeZone\n );\n return dh.i18n.DateTimeFormat.parse(tzFormat, `${text} ${offset}`);\n }\n\n return value;\n }\n\n static makeLayoutAxis(type) {\n const axis = {\n automargin: true,\n gridcolor: ChartTheme.gridcolor,\n linecolor: ChartTheme.linecolor,\n rangeslider: { visible: false },\n showline: true,\n ticklen: 5, // act as padding, can't find a tick padding\n tickcolor: ChartTheme.paper_bgcolor, // hide ticks as padding\n tickfont: {\n color: ChartTheme.zerolinecolor,\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n };\n\n if (type === dh.plot.AxisType.X) {\n Object.assign(axis, {\n showgrid: true,\n });\n } else if (type === dh.plot.AxisType.Y) {\n Object.assign(axis, {\n zerolinecolor: ChartTheme.zerolinecolor,\n zerolinewidth: 2,\n });\n }\n\n return axis;\n }\n\n static makeDefaultLayout() {\n const layout = {\n ...ChartTheme,\n autosize: true,\n colorway: ChartTheme.colorway ? ChartTheme.colorway.split(' ') : [],\n font: {\n family: \"'Fira Sans', sans-serif\",\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n yanchor: 'top',\n pad: { ...ChartUtils.DEFAULT_TITLE_PADDING },\n y: 1,\n text: 'Untitled',\n },\n legend: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n margin: { ...ChartUtils.DEFAULT_MARGIN },\n xaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.X),\n yaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.Y),\n };\n layout.datarevision = 0;\n return layout;\n }\n\n /**\n * Dehydrate settings so they can be JSONified\n * @param {object} settings Chart builder settings\n */\n static dehydrateSettings(settings) {\n return {\n ...settings,\n type: `${settings.type}`,\n };\n }\n\n /**\n * Hydrate settings from a JSONable object\n * @param {object} settings Dehydrated settings\n */\n static hydrateSettings(settings) {\n return {\n ...settings,\n type: dh.plot.SeriesPlotStyle[settings.type],\n };\n }\n\n static titleFromSettings(settings) {\n const {\n series,\n xAxis,\n title = `${series.join(', ')} by ${xAxis}`,\n } = settings;\n\n return title;\n }\n\n /**\n * Creates the Figure settings from the Chart Builder settings\n * This should be deprecated at some point, and have Chart Builder create the figure settings directly.\n * This logic will still need to exist to translate existing charts, but could be part of a migration script\n * to translate the data.\n * Change when we decide to add more functionality to the Chart Builder.\n * @param {object} settings The chart builder settings\n * @param {string} settings.title The title for this figure\n * @param {string} settings.xAxis The name of the column to use for the x-axis\n * @param {string[]} settings.series The name of the columns to use for the series of this figure\n * @param {dh.plot.SeriesPlotStyle} settings.type The plot style for this figure\n */\n static makeFigureSettings(settings, table) {\n const { series, xAxis: settingsAxis, type } = settings;\n const title = ChartUtils.titleFromSettings(settings);\n const xAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.X}`,\n position: `${dh.plot.AxisPosition.BOTTOM}`,\n };\n const yAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.Y}`,\n position: `${dh.plot.AxisPosition.LEFT}`,\n };\n\n return {\n charts: [\n {\n chartType: `${dh.plot.ChartType.XY}`,\n axes: [xAxis, yAxis],\n series: series.map(name => ({\n plotStyle: `${type}`,\n name,\n dataSources: [\n {\n type: `${dh.plot.SourceType.X}`,\n columnName: settingsAxis,\n axis: xAxis,\n table,\n },\n {\n type: `${dh.plot.SourceType.Y}`,\n columnName: name,\n axis: yAxis,\n table,\n },\n ],\n })),\n },\n ],\n title,\n };\n }\n}\n\nexport default ChartUtils;\n"],"file":"ChartUtils.js"}
1
+ {"version":3,"sources":["../src/ChartUtils.js"],"names":["Log","TableUtils","dh","ChartTheme","log","module","DAYS","Object","freeze","calendar","DayOfWeek","values","BUSINESS_COLUMN_TYPE","MILLIS_PER_HOUR","NANOS_PER_MILLI","ChartUtils","getPlotlyChartType","plotStyle","isBusinessTime","plot","SeriesPlotStyle","SCATTER","LINE","BAR","STACKED_BAR","PIE","HISTOGRAM","OHLC","getPlotlyChartMode","getPlotlyProperty","sourceType","SourceType","X","Y","TIME","Z","X_LOW","X_HIGH","Y_LOW","Y_HIGH","OPEN","HIGH","LOW","CLOSE","SIZE","LABEL","COLOR","Error","getPlotlySeriesOrientation","series","sources","length","axis","type","AxisType","ORIENTATION","HORIZONTAL","VERTICAL","getPlotlyErrorBars","x","xLow","xHigh","array","map","value","i","arrayminus","symmetric","getPlotlyDateFormat","formatter","columnType","formatPattern","tickformat","replace","ticksuffix","dataFormatter","getColumnTypeFormatter","dhTimeZone","showTimeZone","i18n","DateTimeFormat","format","Date","automargin","convertNumberPrefix","prefix","getPlotlyNumberFormat","subpatterns","split","placeholderDigits","zeroDigits","decimalDigits","optionalDecimalDigits","numberType","percentSign","suffix","match","paddingLength","isCommaSeparated","indexOf","comma","plotlyNumberType","decimalLength","trimOption","tickprefix","getPlotlyAxisFormat","source","axisFormat","isDateType","addTickSpacing","isNumberType","formatType","AxisFormatType","CATEGORY","gapBetweenMajorTicks","updatedFormat","tickSpacing","Math","tickmode","dtick","getSourceForAxis","chart","j","getSeriesVisibility","name","settings","hiddenSeries","includes","getHiddenLabels","makeSeriesData","mode","orientation","makeSeriesDataFromSeries","axisTypeMap","seriesVisibility","lineColor","shapeColor","some","businessCalendar","getChartType","seriesData","addSourcesToSeriesData","addStylingToSeriesData","seriesDataParam","k","dataAttributeName","axisProperty","getAxisPropertyName","axes","get","axisIndex","axisIndexString","marker","line","width","AREA","fill","STACKED_AREA","stackgroup","STEP","shape","assign","color","paper_bgcolor","increasing","ohlc_increasing","decreasing","ohlc_decreasing","textinfo","outsidetextfont","title_color","visible","getAxisFormats","figure","axisFormats","Map","nullFormat","charts","groupArray","axisType","typeAxes","axisLayoutProperty","getAxisLayoutProperty","has","debug","set","rangebreaks","businessPeriods","businessDays","holidays","timeZone","calendarTimeZone","formatterTimeZone","timeZoneDiff","standardOffset","push","createRangeBreakValuesFromHolidays","forEach","period","pattern","bounds","periodToDecimal","close","open","createBoundsFromDays","weekendBounds","size","getAxisSide","axisPosition","AxisPosition","BOTTOM","TOP","LEFT","RIGHT","getChartForSeries","getLayoutRanges","layout","ranges","keys","filter","key","range","autorange","updateLayoutAxes","layoutParam","plotWidth","plotHeight","getRangeParser","xAxisSize","max","MIN_AXIS_SIZE","min","AXIS_SIZE_PX","MAX_AXIS_SIZE","DEFAULT_AXIS_SIZE","yAxisSize","left","bottom","top","right","axisPositionMap","rightAxes","LEGEND_WIDTH_PX","MAX_LEGEND_SIZE","axisTypes","isYAxis","plotSize","makeLayoutAxis","layoutAxis","updateLayoutAxis","rangeParser","rangeStart","rangeEnd","layoutAxisParam","axisSize","title","text","label","side","position","overlaying","positionAxes","sideIndex","anchor","leftAxes","domain","bottomAxes","topAxes","Number","businessDaysInt","day","nonBusinessDaysInt","reopenDays","Set","closed","adjustedDay","add","boundsArray","closedDay","fullHolidays","partialHolidays","holiday","createPartialHoliday","createFullHoliday","adjustDateForTimeZone","date","toString","dateString","closedPeriods","rangeBreaks","startClose","endClose","dvalue","unwrapValue","wrapValue","property","reduce","result","item","group","updateRanges","asDate","DATE_FORMAT","asNumber","substr","parse","tzFormat","estimatedOffset","estimatedDate","offset","gridcolor","linecolor","rangeslider","showline","ticklen","tickcolor","tickfont","zerolinecolor","font","showgrid","zerolinewidth","makeDefaultLayout","autosize","colorway","family","yanchor","pad","DEFAULT_TITLE_PADDING","y","legend","margin","DEFAULT_MARGIN","xaxis","yaxis","datarevision","dehydrateSettings","hydrateSettings","titleFromSettings","xAxis","join","makeFigureSettings","table","settingsAxis","NUMBER","yAxis","chartType","ChartType","XY","dataSources","columnName","l","r","t","b"],"mappings":"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","sourcesContent":["import Log from '@deephaven/log';\nimport { TableUtils } from '@deephaven/iris-grid';\nimport dh from '@deephaven/jsapi-shim';\nimport ChartTheme from './ChartTheme';\n\nconst log = Log.module('ChartUtils');\n\nconst DAYS = Object.freeze(dh.calendar.DayOfWeek.values());\n\nconst BUSINESS_COLUMN_TYPE = 'io.deephaven.time.DateTime';\n\nconst MILLIS_PER_HOUR = 3600000;\n\nconst NANOS_PER_MILLI = 1000000;\n\nclass ChartUtils {\n static DEFAULT_AXIS_SIZE = 0.15;\n\n static MIN_AXIS_SIZE = 0.025;\n\n static MAX_AXIS_SIZE = 0.2;\n\n static AXIS_SIZE_PX = 75;\n\n static LEGEND_WIDTH_PX = 50;\n\n static MAX_LEGEND_SIZE = 0.25;\n\n static ORIENTATION = Object.freeze({\n HORIZONTAL: 'h',\n VERTICAL: 'v',\n });\n\n static DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSS';\n\n static DEFAULT_MARGIN = Object.freeze({ l: 60, r: 50, t: 30, b: 60, pad: 0 });\n\n static DEFAULT_TITLE_PADDING = Object.freeze({ t: 8 });\n\n static SUBTITLE_LINE_HEIGHT = 25;\n\n /**\n * Converts the Iris plot style into a plotly chart type\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle\n * @param {boolean} isBusinessTime If the plot is using business time for an axis\n */\n static getPlotlyChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n // scattergl mode is more performant, but doesn't support the rangebreaks we need for businessTime calendars\n return !isBusinessTime ? 'scattergl' : 'scatter';\n case dh.plot.SeriesPlotStyle.LINE:\n // There is also still some artifacting bugs with scattergl: https://github.com/plotly/plotly.js/issues/3522\n // The artifacting only occurs on line plots, which we can draw with fairly decent performance using SVG paths\n // Once the above plotly issue is fixed, scattergl should be used here (when !isBusinessTime)\n return 'scatter';\n case dh.plot.SeriesPlotStyle.BAR:\n case dh.plot.SeriesPlotStyle.STACKED_BAR:\n return 'bar';\n\n case dh.plot.SeriesPlotStyle.PIE:\n return 'pie';\n\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'histogram';\n\n case dh.plot.SeriesPlotStyle.OHLC:\n return 'ohlc';\n\n default:\n return null;\n }\n }\n\n /**\n * Converts the Iris plot style into a plotly chart mode\n * @param {String} plotStyle The plotStyle to use, see dh.plot.SeriesPlotStyle.*\n */\n static getPlotlyChartMode(plotStyle) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'markers';\n case dh.plot.SeriesPlotStyle.LINE:\n return 'lines';\n default:\n return null;\n }\n }\n\n /**\n * Get the property to set on the series data for plotly\n * @param {dh.plot.SeriesPlotStyle} plotStyle The plot style of the series\n * @param {dh.plot.SourceType} sourceType The source type for the series\n */\n static getPlotlyProperty(plotStyle, sourceType) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.PIE:\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'labels';\n case dh.plot.SourceType.Y:\n return 'values';\n default:\n break;\n }\n break;\n case dh.plot.SeriesPlotStyle.OHLC:\n switch (sourceType) {\n case dh.plot.SourceType.TIME:\n return 'x';\n default:\n break;\n }\n break;\n default:\n break;\n }\n\n switch (sourceType) {\n case dh.plot.SourceType.X:\n return 'x';\n case dh.plot.SourceType.Y:\n return 'y';\n case dh.plot.SourceType.Z:\n return 'z';\n case dh.plot.SourceType.X_LOW:\n return 'xLow';\n case dh.plot.SourceType.X_HIGH:\n return 'xHigh';\n case dh.plot.SourceType.Y_LOW:\n return 'yLow';\n case dh.plot.SourceType.Y_HIGH:\n return 'yHigh';\n case dh.plot.SourceType.TIME:\n return 'time';\n case dh.plot.SourceType.OPEN:\n return 'open';\n case dh.plot.SourceType.HIGH:\n return 'high';\n case dh.plot.SourceType.LOW:\n return 'low';\n case dh.plot.SourceType.CLOSE:\n return 'shape';\n case dh.plot.SourceType.SIZE:\n return 'size';\n case dh.plot.SourceType.LABEL:\n return 'label';\n case dh.plot.SourceType.COLOR:\n return 'color';\n default:\n throw new Error('Unrecognized source type', sourceType);\n }\n }\n\n static getPlotlySeriesOrientation(series) {\n const { sources } = series;\n if (sources.length === 2 && sources[0].axis.type === dh.plot.AxisType.Y) {\n return ChartUtils.ORIENTATION.HORIZONTAL;\n }\n\n return ChartUtils.ORIENTATION.VERTICAL;\n }\n\n /**\n * Generate the plotly error bar data from the passed in data.\n * Iris passes in the values as absolute, plotly needs them as relative.\n * @param {Array[Number]} x The main data array\n * @param {Array[Number]} xLow The absolute low values\n * @param {Array[Number]} xHigh\n *\n * @returns {Object} The error_x object required by plotly, or null if none is required\n */\n static getPlotlyErrorBars(x, xLow, xHigh) {\n const array = xHigh.map((value, i) => value - x[i]);\n const arrayminus = xLow.map((value, i) => x[i] - value);\n return {\n type: 'data',\n symmetric: false,\n array,\n arrayminus,\n };\n }\n\n static getPlotlyDateFormat(formatter, columnType, formatPattern) {\n const tickformat =\n formatPattern == null\n ? null\n : formatPattern\n .replace('%', '%%')\n .replace(/S{9}/g, '%9f')\n .replace(/S{8}/g, '%8f')\n .replace(/S{7}/g, '%7f')\n .replace(/S{6}/g, '%6f')\n .replace(/S{5}/g, '%5f')\n .replace(/S{4}/g, '%4f')\n .replace(/S{3}/g, '%3f')\n .replace(/S{2}/g, '%2f')\n .replace(/S{1}/g, '%1f')\n .replace(/y{4}/g, '%Y')\n .replace(/y{2}/g, '%y')\n .replace(/M{4}/g, '%B')\n .replace(/M{3}/g, '%b')\n .replace(/M{2}/g, '%m')\n .replace(/M{1}/g, '%-m')\n .replace(/E{4,}/g, '%A')\n .replace(/E{1,}/g, '%a')\n .replace(/d{2}/g, '%d')\n .replace(/([^%]|^)d{1}/g, '$1%-d')\n .replace(/H{2}/g, '%H')\n .replace(/h{2}/g, '%I')\n .replace(/h{1}/g, '%-I')\n .replace(/m{2}/g, '%M')\n .replace(/s{2}/g, '%S')\n .replace(\"'T'\", 'T')\n .replace(' z', ''); // timezone added as suffix if necessary\n\n let ticksuffix = null;\n const dataFormatter = formatter.getColumnTypeFormatter(columnType);\n if (dataFormatter.dhTimeZone != null && dataFormatter.showTimeZone) {\n ticksuffix = dh.i18n.DateTimeFormat.format(\n ' z',\n new Date(),\n dataFormatter.dhTimeZone\n );\n }\n\n return { tickformat, ticksuffix, automargin: true };\n }\n\n static convertNumberPrefix(prefix) {\n return prefix.replace(/\\u00A4\\u00A4/g, 'USD').replace(/\\u00A4/g, '$');\n }\n\n static getPlotlyNumberFormat(formatter, columnType, formatPattern) {\n if (!formatPattern) {\n return null;\n }\n\n // We translate java formatting: https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html\n // Into d3 number formatting: https://github.com/d3/d3-format\n // We can't translate number formatting exactly, but should be able to translate the most common cases\n // First split it into the subpatterns; currently only handling the positive subpattern, ignoring the rest\n const subpatterns = formatPattern.split(';');\n const [\n ,\n prefix,\n placeholderDigits,\n zeroDigits,\n ,\n decimalDigits,\n optionalDecimalDigits,\n numberType,\n percentSign,\n suffix,\n ] = subpatterns[0].match(\n /^([^#,0.]*)([#,]*)([0,]*)(\\.?)(0*)(#*)(E?0*)(%?)(.*)/\n );\n\n const paddingLength = zeroDigits.replace(',', '').length;\n const isCommaSeparated =\n placeholderDigits.indexOf(',') >= 0 || zeroDigits.indexOf(',') >= 0;\n const comma = isCommaSeparated ? ',' : '';\n const plotlyNumberType = numberType ? 'e' : 'f';\n const type = percentSign || plotlyNumberType;\n const decimalLength = decimalDigits.length + optionalDecimalDigits.length;\n // IDS-4565 Plotly uses an older version of d3 which doesn't support the trim option or negative brackets\n // If plotly updates it's d3 version, this should be re-enabled\n // const trimOption = optionalDecimalDigits.length > 0 ? '~' : '';\n const trimOption = '';\n\n const tickformat = `0${paddingLength}${comma}.${decimalLength}${trimOption}${type}`;\n const tickprefix = ChartUtils.convertNumberPrefix(prefix);\n // prefix and suffix are processed the same\n const ticksuffix = ChartUtils.convertNumberPrefix(suffix);\n\n return { tickformat, tickprefix, ticksuffix, automargin: true };\n }\n\n /**\n * Gets the plotly axis formatting information from the source passed in\n * @param {dh.plot.Source} source The Source to get the formatter information from\n * @param {Formatter} formatter The current formatter for formatting data\n */\n static getPlotlyAxisFormat(source, formatter = null) {\n const { axis, columnType } = source;\n const { formatPattern } = axis;\n\n let axisFormat = null;\n if (TableUtils.isDateType(columnType)) {\n axisFormat = ChartUtils.getPlotlyDateFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, true);\n } else if (TableUtils.isNumberType(columnType)) {\n axisFormat = ChartUtils.getPlotlyNumberFormat(\n formatter,\n columnType,\n formatPattern\n );\n axisFormat = ChartUtils.addTickSpacing(axisFormat, axis, false);\n }\n\n if (axis.formatType === dh.plot.AxisFormatType.CATEGORY) {\n if (axisFormat) {\n axisFormat.type = 'category';\n } else {\n axisFormat = { type: 'category', tickformat: null, ticksuffix: null };\n }\n }\n\n return axisFormat;\n }\n\n /**\n * Adds tick spacing for an axis that has gapBetweenMajorTicks defined.\n *\n * @param {object} axisFormat the current axis format, may be null\n * @param {object} axis the current axis\n * @param {boolean} isDateType indicates if the columns is a date type\n */\n static addTickSpacing(axisFormat, axis, isDateType) {\n const { gapBetweenMajorTicks } = axis;\n if (gapBetweenMajorTicks > 0) {\n const updatedFormat = axisFormat || {};\n let tickSpacing = gapBetweenMajorTicks;\n if (isDateType) {\n // Need to convert from nanoseconds to milliseconds\n tickSpacing = gapBetweenMajorTicks / NANOS_PER_MILLI;\n }\n if (axis.log) {\n tickSpacing = Math.log(tickSpacing);\n }\n // Note that tickmode defaults to 'auto'\n updatedFormat.tickmode = 'linear';\n updatedFormat.dtick = tickSpacing;\n return updatedFormat;\n }\n\n return axisFormat;\n }\n\n /**\n * Retrieve the data source for a given axis in a chart\n * @param {dh.plot.Chart} chart The chart to get the source for\n * @param {dh.plot.Axis} axis The axis to find the source for\n * @returns {dh.plot.Source} The first source matching this axis\n */\n static getSourceForAxis(chart, axis) {\n for (let i = 0; i < chart.series.length; i += 1) {\n const series = chart.series[i];\n for (let j = 0; j < series.sources.length; j += 1) {\n const source = series.sources[j];\n if (source.axis === axis) {\n return source;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get visibility setting for the series object\n * @param {string} name The series name to get the visibility for\n * @param {object} settings Chart settings\n * @returns {boolean|string} True for visible series and 'legendonly' for hidden\n */\n static getSeriesVisibility(name, settings) {\n if (settings?.hiddenSeries?.includes(name)) {\n return 'legendonly';\n }\n return true;\n }\n\n /**\n * Get hidden labels array from chart settings\n * @param {object} settings Chart settings\n * @returns {string[]} Array of hidden series names\n */\n static getHiddenLabels(settings) {\n if (settings?.hiddenSeries) {\n return [...settings.hiddenSeries];\n }\n return [];\n }\n\n /**\n * Create a default series data object. Apply styling to the object afterward.\n * @returns {Object} A simple series data object with no styling\n */\n static makeSeriesData(\n type,\n mode,\n name,\n orientation = ChartUtils.ORIENTATION.VERTICAL\n ) {\n return { type, mode, name, orientation };\n }\n\n /**\n * Create a data series (trace) for use with plotly\n * @param {dh.plot.Series} series The series to create the series data with\n * @param {Map<dh.plot.AxisType, dh.plot.Axis[]>} axisTypeMap The map of axes grouped by type\n * @param {boolean|string} seriesVisibility Visibility setting for the series\n * @returns {Object} The series data (trace) object for use with plotly.\n */\n static makeSeriesDataFromSeries(series, axisTypeMap, seriesVisibility) {\n const { name, plotStyle, lineColor, shapeColor, sources } = series;\n\n const isBusinessTime = sources.some(source => source.axis.businessCalendar);\n const type = ChartUtils.getChartType(plotStyle, isBusinessTime);\n const mode = ChartUtils.getPlotlyChartMode(plotStyle);\n const orientation = ChartUtils.getPlotlySeriesOrientation(series);\n\n const seriesData = ChartUtils.makeSeriesData(type, mode, name, orientation);\n\n ChartUtils.addSourcesToSeriesData(\n seriesData,\n plotStyle,\n sources,\n axisTypeMap\n );\n\n ChartUtils.addStylingToSeriesData(\n seriesData,\n plotStyle,\n lineColor,\n shapeColor,\n seriesVisibility\n );\n\n return seriesData;\n }\n\n static addSourcesToSeriesData(\n seriesDataParam,\n plotStyle,\n sources,\n axisTypeMap\n ) {\n const seriesData = seriesDataParam;\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis, type: sourceType } = source;\n\n const dataAttributeName = ChartUtils.getPlotlyProperty(\n plotStyle,\n sourceType\n );\n seriesData[dataAttributeName] = [];\n\n const axisProperty = ChartUtils.getAxisPropertyName(axis.type);\n const axes = axisTypeMap.get(axis.type);\n const axisIndex = axes.indexOf(axis);\n if (axisProperty != null) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n seriesData[`${axisProperty}axis`] = `${axisProperty}${axisIndexString}`;\n }\n }\n }\n\n static addStylingToSeriesData(\n seriesDataParam,\n plotStyle,\n lineColor = null,\n shapeColor = null,\n seriesVisibility = null\n ) {\n const seriesData = seriesDataParam;\n // Add some empty objects so we can fill them in later with details without checking for existence\n seriesData.marker = { line: {} }; // border line width on markers\n seriesData.line = {\n width: 1, // default line width for lines, should eventually be able to override\n };\n\n if (plotStyle === dh.plot.SeriesPlotStyle.AREA) {\n seriesData.fill = 'tozeroy';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STACKED_AREA) {\n seriesData.stackgroup = 'stack';\n } else if (plotStyle === dh.plot.SeriesPlotStyle.STEP) {\n seriesData.line.shape = 'hv'; // plot.ly horizontal then vertical step styling\n } else if (plotStyle === dh.plot.SeriesPlotStyle.HISTOGRAM) {\n // The default histfunc in plotly is 'count', but the data passed up from the API provides explicit x/y values and bins\n // Since it's converted to bar, just set the widths of each bar\n seriesData.width = [];\n Object.assign(seriesData.marker.line, {\n color: ChartTheme.paper_bgcolor,\n width: 1,\n });\n } else if (plotStyle === dh.plot.SeriesPlotStyle.OHLC) {\n seriesData.increasing = {\n line: { color: ChartTheme.ohlc_increasing },\n };\n seriesData.decreasing = {\n line: { color: ChartTheme.ohlc_decreasing },\n };\n } else if (plotStyle === dh.plot.SeriesPlotStyle.PIE) {\n seriesData.textinfo = 'label+percent';\n seriesData.outsidetextfont = { color: ChartTheme.title_color };\n }\n\n if (lineColor != null) {\n if (plotStyle === dh.plot.SeriesPlotStyle.BAR) {\n seriesData.marker.color = lineColor;\n } else {\n seriesData.line.color = lineColor;\n }\n }\n\n if (shapeColor != null) {\n seriesData.marker.color = shapeColor;\n }\n\n // Skipping pie charts\n // Pie slice visibility is configured in chart layout instead of series data\n if (seriesVisibility != null && plotStyle !== dh.plot.SeriesPlotStyle.PIE) {\n seriesData.visible = seriesVisibility;\n }\n }\n\n /**\n * Retrieve the axis formats from the provided figure.\n * Currently defaults to just the x/y axes.\n * @param {dh.plot.Figure} figure The figure to get the axis formats for\n * @param {Formatter} formatter The formatter to use when getting the axis format\n * @returns {Map<string, object>} A map of axis layout property names to axis formats\n */\n static getAxisFormats(figure, formatter) {\n const axisFormats = new Map();\n const nullFormat = { tickformat: null, ticksuffix: null };\n\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n const axisTypeMap = ChartUtils.groupArray(chart.axes, 'type');\n\n for (let j = 0; j < chart.series.length; j += 1) {\n const series = chart.series[j];\n const { sources } = series;\n\n for (let k = 0; k < sources.length; k += 1) {\n const source = sources[k];\n const { axis } = source;\n const { type: axisType } = axis;\n const typeAxes = axisTypeMap.get(axisType);\n const axisIndex = typeAxes.indexOf(axis);\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n\n if (axisFormats.has(axisLayoutProperty)) {\n log.debug(`${axisLayoutProperty} already added.`);\n } else {\n log.debug(`Adding ${axisLayoutProperty} to axisFormats.`);\n const axisFormat = ChartUtils.getPlotlyAxisFormat(\n source,\n formatter\n );\n if (axisFormat === null) {\n axisFormats.set(axisLayoutProperty, nullFormat);\n } else {\n axisFormats.set(axisLayoutProperty, axisFormat);\n\n const { businessCalendar } = axis;\n if (businessCalendar) {\n axisFormat.rangebreaks = [];\n const {\n businessPeriods,\n businessDays,\n holidays,\n timeZone: calendarTimeZone,\n } = businessCalendar;\n const formatterTimeZone = formatter?.getColumnTypeFormatter(\n BUSINESS_COLUMN_TYPE\n )?.dhTimeZone;\n const timeZoneDiff = formatterTimeZone\n ? (calendarTimeZone.standardOffset -\n formatterTimeZone.standardOffset) /\n 60\n : 0;\n if (holidays.length > 0) {\n axisFormat.rangebreaks.push(\n ...ChartUtils.createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n businessPeriods.forEach(period =>\n axisFormat.rangebreaks.push({\n pattern: 'hour',\n bounds: [\n ChartUtils.periodToDecimal(period.close) + timeZoneDiff,\n ChartUtils.periodToDecimal(period.open) + timeZoneDiff,\n ],\n })\n );\n // If there are seven business days, then there is no weekend\n if (businessDays.length < DAYS.length) {\n ChartUtils.createBoundsFromDays(businessDays).forEach(\n weekendBounds =>\n axisFormat.rangebreaks.push({\n pattern: 'day of week',\n bounds: weekendBounds,\n })\n );\n }\n }\n\n if (axisFormats.size === chart.axes.length) {\n return axisFormats;\n }\n }\n }\n }\n }\n }\n\n return axisFormats;\n }\n\n static getChartType(plotStyle, isBusinessTime) {\n switch (plotStyle) {\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n // When reading data from the `Figure`, it already provides bins and values, so rather than using\n // plot.ly to calculate the bins and sum values, just convert it to a bar chart\n return 'bar';\n default:\n return ChartUtils.getPlotlyChartType(plotStyle, isBusinessTime);\n }\n }\n\n /**\n * Return the plotly axis property name\n * @param {dh.plot.AxisType} axisType The axis type to get the property name for\n */\n static getAxisPropertyName(axisType) {\n switch (axisType) {\n case dh.plot.AxisType.X:\n return 'x';\n case dh.plot.AxisType.Y:\n return 'y';\n default:\n return null;\n }\n }\n\n /**\n * Returns the plotly \"side\" value for the provided axis position\n * @param {dh.plot.AxisPosition} axisPosition The Iris AxisPosition of the axis\n */\n static getAxisSide(axisPosition) {\n switch (axisPosition) {\n case dh.plot.AxisPosition.BOTTOM:\n return 'bottom';\n case dh.plot.AxisPosition.TOP:\n return 'top';\n case dh.plot.AxisPosition.LEFT:\n return 'left';\n case dh.plot.AxisPosition.RIGHT:\n return 'right';\n default:\n return null;\n }\n }\n\n /**\n * Retrieve the chart that contains the passed in series from the figure\n * @param {dh.plot.Figure} figure The figure to retrieve the chart from\n * @param {dh.plot.Series} series The series to get the chart for\n */\n static getChartForSeries(figure, series) {\n const { charts } = figure;\n\n for (let i = 0; i < charts.length; i += 1) {\n const chart = charts[i];\n for (let j = 0; j < chart.series.length; j += 1) {\n if (series === chart.series[j]) {\n return chart;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Get an object mapping axis to their ranges\n * @param {object} layout The plotly layout object to get the ranges from\n * @returns {object} An object mapping the axis name to it's range\n */\n static getLayoutRanges(layout) {\n const ranges = {};\n const keys = Object.keys(layout).filter(key => key.indexOf('axis') >= 0);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (layout[key] && layout[key].range && !layout[key].autorange) {\n // Only want to add the range if it's not autoranged\n ranges[key] = [...layout[key].range];\n }\n }\n\n return ranges;\n }\n\n /**\n * Updates the axes positions and sizes in the layout object provided.\n * If the axis did not exist in the layout previously, it is created and added.\n * Any axis that no longer exists in axes is removed.\n * With Downsampling enabled, will also update the range on the axis itself as appropriate\n * @param {object} layoutParam The layout object to update\n * @param {dh.plot.Axis[]} axes The axes to update the layout with\n * @param {number} plotWidth The width of the plot to calculate the axis sizes for\n * @param {number} plotHeight The height of the plot to calculate the axis sizes for\n * @param {func} getRangeParser A function to retrieve the range parser for a given axis\n */\n static updateLayoutAxes(\n layoutParam,\n axes,\n plotWidth = 0,\n plotHeight = 0,\n getRangeParser = null\n ) {\n const xAxisSize =\n plotWidth > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotHeight,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n const yAxisSize =\n plotHeight > 0\n ? Math.max(\n ChartUtils.MIN_AXIS_SIZE,\n Math.min(\n ChartUtils.AXIS_SIZE_PX / plotWidth,\n ChartUtils.MAX_AXIS_SIZE\n )\n )\n : ChartUtils.DEFAULT_AXIS_SIZE;\n\n // Adjust the bounds based on where the legend is\n // For now, always assume the legend is shown on the right\n const bounds = {\n left: 0,\n bottom: 0,\n top: 1,\n right: 1,\n };\n const axisPositionMap = ChartUtils.groupArray(axes, 'position');\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n if (rightAxes.length > 0) {\n if (plotWidth > 0) {\n bounds.right =\n 1 -\n Math.max(\n 0,\n Math.min(\n ChartUtils.LEGEND_WIDTH_PX / plotWidth,\n ChartUtils.MAX_LEGEND_SIZE\n )\n );\n } else {\n bounds.right = 1 - ChartUtils.DEFAULT_AXIS_SIZE;\n }\n }\n\n const layout = layoutParam;\n const axisTypeMap = ChartUtils.groupArray(axes, 'type');\n const axisTypes = [...axisTypeMap.keys()];\n for (let j = 0; j < axisTypes.length; j += 1) {\n const axisType = axisTypes[j];\n const axisProperty = ChartUtils.getAxisPropertyName(axisType);\n if (axisProperty != null) {\n const typeAxes = axisTypeMap.get(axisType);\n const isYAxis = axisType === dh.plot.AxisType.Y;\n const plotSize = isYAxis ? plotHeight : plotWidth;\n let axisIndex = 0;\n for (axisIndex = 0; axisIndex < typeAxes.length; axisIndex += 1) {\n const axis = typeAxes[axisIndex];\n const axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n if (layout[axisLayoutProperty] == null) {\n layout[axisLayoutProperty] = ChartUtils.makeLayoutAxis(axisType);\n }\n\n const layoutAxis = layout[axisLayoutProperty];\n ChartUtils.updateLayoutAxis(\n layoutAxis,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n );\n const { range, autorange } = layoutAxis;\n if (getRangeParser && range && !autorange) {\n const rangeParser = getRangeParser(axis);\n const [rangeStart, rangeEnd] = rangeParser(range);\n\n log.debug(\n 'Setting downsample range',\n plotSize,\n rangeStart,\n rangeEnd\n );\n\n axis.range(plotSize, rangeStart, rangeEnd);\n } else {\n axis.range(plotSize);\n }\n }\n\n let axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n while (layout[axisLayoutProperty] != null) {\n delete layout[axisLayoutProperty];\n\n axisIndex += 1;\n axisLayoutProperty = ChartUtils.getAxisLayoutProperty(\n axisProperty,\n axisIndex\n );\n }\n }\n }\n }\n\n static getAxisLayoutProperty(axisProperty, axisIndex) {\n const axisIndexString = axisIndex > 0 ? `${axisIndex + 1}` : '';\n return `${axisProperty}axis${axisIndexString}`;\n }\n\n /**\n * Updates the layout axis object in place\n * @param {object} layoutAxisParam The plotly layout axis param\n * @param {dh.plot.Axis} axis The Iris Axis to update the plotly layout with\n * @param {number} axisIndex The type index for this axis\n * @param {Map<dh.plot.AxisPosition, dh.plot.Axis>} axisPositionMap All the axes mapped by position\n * @param {number} axisSize The size of each axis in percent\n * @param {object} bounds The bounds of the axes domains\n */\n static updateLayoutAxis(\n layoutAxisParam,\n axis,\n axisIndex,\n axisPositionMap,\n xAxisSize,\n yAxisSize,\n bounds\n ) {\n const isYAxis = axis.type === dh.plot.AxisType.Y;\n const axisSize = isYAxis ? yAxisSize : xAxisSize;\n const layoutAxis = layoutAxisParam;\n layoutAxis.title.text = axis.label;\n if (axis.log) {\n layoutAxis.type = 'log';\n }\n layoutAxis.side = ChartUtils.getAxisSide(axis.position);\n if (axisIndex > 0) {\n layoutAxis.overlaying = ChartUtils.getAxisPropertyName(axis.type);\n\n const positionAxes = axisPositionMap.get(axis.position);\n const sideIndex = positionAxes.indexOf(axis);\n if (sideIndex > 0) {\n layoutAxis.anchor = 'free';\n\n if (axis.position === dh.plot.AxisPosition.RIGHT) {\n layoutAxis.position =\n bounds.right + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.TOP) {\n layoutAxis.position =\n bounds.top + (sideIndex - positionAxes.length + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.BOTTOM) {\n layoutAxis.position =\n bounds.bottom + (positionAxes.length - sideIndex + 1) * axisSize;\n } else if (axis.position === dh.plot.AxisPosition.LEFT) {\n layoutAxis.position =\n bounds.left + (positionAxes.length - sideIndex + 1) * axisSize;\n }\n }\n } else if (axis.type === dh.plot.AxisType.X) {\n const leftAxes = axisPositionMap.get(dh.plot.AxisPosition.LEFT) || [];\n const rightAxes = axisPositionMap.get(dh.plot.AxisPosition.RIGHT) || [];\n const left = Math.max(\n bounds.left,\n bounds.left + (leftAxes.length - 1) * yAxisSize\n );\n const right = Math.min(\n bounds.right - (rightAxes.length - 1) * yAxisSize,\n bounds.right\n );\n layoutAxis.domain = [left, right];\n } else if (axis.type === dh.plot.AxisType.Y) {\n const bottomAxes = axisPositionMap.get(dh.plot.AxisPosition.BOTTOM) || [];\n const topAxes = axisPositionMap.get(dh.plot.AxisPosition.TOP) || [];\n const bottom = Math.max(\n bounds.bottom,\n bounds.bottom + (bottomAxes.length - 1) * xAxisSize\n );\n const top = Math.min(\n bounds.top - (topAxes.length - 1) * xAxisSize,\n bounds.top\n );\n layoutAxis.domain = [bottom, top];\n }\n }\n\n /**\n * Converts an open or close period to a declimal. e.g '09:30\" to 9.5\n *\n * @param {String} period the open or close value of the period\n */\n static periodToDecimal(period) {\n const values = period.split(':');\n return Number(values[0]) + Number(values[1] / 60);\n }\n\n /**\n * Creates range break bounds for plotly from business days.\n * For example a standard business week of ['MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY']\n * will result in [[6,1]] meaning close on Saturday and open on Monday.\n * If you remove Wednesday from the array, then you get two closures [[6, 1], [3, 4]]\n *\n * @param {Array} businessDays the days to display on the x-axis\n */\n static createBoundsFromDays(businessDays) {\n const businessDaysInt = businessDays.map(day => DAYS.indexOf(day));\n const nonBusinessDaysInt = DAYS.filter(\n day => !businessDays.includes(day)\n ).map(day => DAYS.indexOf(day));\n // These are the days when business reopens (e.g. Monday after a weekend)\n const reopenDays = new Set();\n nonBusinessDaysInt.forEach(closed => {\n for (let i = closed + 1; i < closed + DAYS.length; i += 1) {\n const adjustedDay = i % DAYS.length;\n if (businessDaysInt.includes(adjustedDay)) {\n reopenDays.add(adjustedDay);\n break;\n }\n }\n });\n const boundsArray = [];\n // For each reopen day, find the furthest previous closed day\n reopenDays.forEach(open => {\n for (let i = open - 1; i > open - DAYS.length; i -= 1) {\n const adjustedDay = i < 0 ? i + DAYS.length : i;\n if (businessDaysInt.includes(adjustedDay)) {\n const closedDay = (adjustedDay + 1) % 7;\n boundsArray.push([closedDay, open]);\n break;\n }\n }\n });\n return boundsArray;\n }\n\n /**\n * Creates an array of range breaks for all holidays.\n *\n * @param {Array} holidays an array of holidays\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createRangeBreakValuesFromHolidays(\n holidays,\n calendarTimeZone,\n formatterTimeZone\n ) {\n const fullHolidays = [];\n const partialHolidays = [];\n holidays.forEach(holiday => {\n if (holiday.businessPeriods.length > 0) {\n partialHolidays.push(\n ...ChartUtils.createPartialHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n } else {\n fullHolidays.push(\n ChartUtils.createFullHoliday(\n holiday,\n calendarTimeZone,\n formatterTimeZone\n )\n );\n }\n });\n return [{ values: fullHolidays }, ...partialHolidays];\n }\n\n /**\n * Creates the range break value for a full holiday. A full holiday is day that has no business periods.\n *\n * @param {Holiday} holiday the full holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createFullHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n return ChartUtils.adjustDateForTimeZone(\n `${holiday.date.toString()} 00:00:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n );\n }\n\n /**\n * Creates the range break for a partial holiday. A partial holiday is holiday with business periods\n * that are different than the default business periods.\n *\n * @param {Holiday} holiday the partial holiday\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static createPartialHoliday(holiday, calendarTimeZone, formatterTimeZone) {\n // If a holiday has business periods {open1, close1} and {open2, close2}\n // This will generate range breaks for:\n // closed from 00:00 to open1\n // closed from close1 to open2\n // closed from close2 to 23:59:59.999999\n const dateString = holiday.date.toString();\n const closedPeriods = ['00:00'];\n holiday.businessPeriods.forEach(period => {\n closedPeriods.push(period.open);\n closedPeriods.push(period.close);\n });\n // To go up to 23:59:59.999999, we calculate the dvalue using 24 - close\n closedPeriods.push('24:00');\n\n const rangeBreaks = [];\n for (let i = 0; i < closedPeriods.length; i += 2) {\n const startClose = closedPeriods[i];\n const endClose = closedPeriods[i + 1];\n // Skip over any periods where start and close are the same (zero hours)\n if (startClose !== endClose) {\n const values = [\n ChartUtils.adjustDateForTimeZone(\n `${dateString} ${startClose}:00.000000`,\n calendarTimeZone,\n formatterTimeZone\n ),\n ];\n const dvalue =\n MILLIS_PER_HOUR *\n (ChartUtils.periodToDecimal(endClose) -\n ChartUtils.periodToDecimal(startClose));\n rangeBreaks.push({ values, dvalue });\n }\n }\n return rangeBreaks;\n }\n\n /**\n * Adjusts a date string from the calendar time zone to the formatter time zone.\n *\n * @param {string} dateString the date string\n * @param {TimeZone} calendarTimeZone the time zone for the business calendar\n * @param {TimeZone} formatterTimeZone the time zone for the formatter\n */\n static adjustDateForTimeZone(\n dateString,\n calendarTimeZone,\n formatterTimeZone\n ) {\n if (\n formatterTimeZone &&\n formatterTimeZone.standardOffset !== calendarTimeZone.standardOffset\n ) {\n return ChartUtils.unwrapValue(\n ChartUtils.wrapValue(\n dateString,\n BUSINESS_COLUMN_TYPE,\n calendarTimeZone\n ),\n formatterTimeZone\n );\n }\n return dateString;\n }\n\n /**\n * Groups an array and returns a map\n * @param {object[]} array The object to group\n * @param {string} property The property name to group by\n * @returns {Map<object, object>} A map containing the items grouped by their values for the property\n */\n static groupArray(array, property) {\n return array.reduce((result, item) => {\n const key = item[property];\n const group = result.get(key) || [];\n group.push(item);\n result.set(key, group);\n return result;\n }, new Map());\n }\n\n /**\n * Update\n */\n static updateRanges() {}\n\n /**\n * Unwraps a value provided from API to a value plotly can understand\n * Eg. Unwraps DateWrapper, LongWrapper objects.\n */\n static unwrapValue(value, timeZone = null) {\n if (value != null) {\n if (value.asDate) {\n return dh.i18n.DateTimeFormat.format(\n ChartUtils.DATE_FORMAT,\n value,\n timeZone\n );\n }\n\n if (value.asNumber) {\n return value.asNumber();\n }\n }\n\n return value;\n }\n\n /**\n *\n * @param {any} value The value to wrap up\n * @param {string} columnType The type of column this value is from\n * @param {dh.i18n.TimeZone} timeZone The time zone if applicable\n */\n static wrapValue(value, columnType, timeZone = null) {\n if (TableUtils.isDateType(columnType) && typeof value === 'string') {\n // Need to limit the format to the actual length of the string range set in plotly\n // Otherwise parse will fail\n const text = value;\n const format = ChartUtils.DATE_FORMAT.substr(0, value.length);\n const date = dh.i18n.DateTimeFormat.parse(format, text);\n if (!timeZone) {\n return date;\n }\n\n // IDS-5994 Due to date parsing, time zone, and daylight savings shenanigans, we need\n // to pass the actual offset with the time to have it parse correctly.\n // However, the offset can change based on the date because of Daylight Savings\n // So we end up parsing the date multiple times. And curse daylight savings.\n const tzFormat = `${format} Z`;\n const estimatedOffset = dh.i18n.DateTimeFormat.format(\n 'Z',\n date,\n timeZone\n );\n const estimatedDate = dh.i18n.DateTimeFormat.parse(\n tzFormat,\n `${text} ${estimatedOffset}`\n );\n const offset = dh.i18n.DateTimeFormat.format(\n 'Z',\n estimatedDate,\n timeZone\n );\n return dh.i18n.DateTimeFormat.parse(tzFormat, `${text} ${offset}`);\n }\n\n return value;\n }\n\n static makeLayoutAxis(type) {\n const axis = {\n automargin: true,\n gridcolor: ChartTheme.gridcolor,\n linecolor: ChartTheme.linecolor,\n rangeslider: { visible: false },\n showline: true,\n ticklen: 5, // act as padding, can't find a tick padding\n tickcolor: ChartTheme.paper_bgcolor, // hide ticks as padding\n tickfont: {\n color: ChartTheme.zerolinecolor,\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n };\n\n if (type === dh.plot.AxisType.X) {\n Object.assign(axis, {\n showgrid: true,\n });\n } else if (type === dh.plot.AxisType.Y) {\n Object.assign(axis, {\n zerolinecolor: ChartTheme.zerolinecolor,\n zerolinewidth: 2,\n });\n }\n\n return axis;\n }\n\n static makeDefaultLayout() {\n const layout = {\n ...ChartTheme,\n autosize: true,\n colorway: ChartTheme.colorway ? ChartTheme.colorway.split(' ') : [],\n font: {\n family: \"'Fira Sans', sans-serif\",\n },\n title: {\n font: {\n color: ChartTheme.title_color,\n },\n yanchor: 'top',\n pad: { ...ChartUtils.DEFAULT_TITLE_PADDING },\n y: 1,\n text: 'Untitled',\n },\n legend: {\n font: {\n color: ChartTheme.title_color,\n },\n },\n margin: { ...ChartUtils.DEFAULT_MARGIN },\n xaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.X),\n yaxis: ChartUtils.makeLayoutAxis(dh.plot.AxisType.Y),\n };\n layout.datarevision = 0;\n return layout;\n }\n\n /**\n * Dehydrate settings so they can be JSONified\n * @param {object} settings Chart builder settings\n */\n static dehydrateSettings(settings) {\n return {\n ...settings,\n type: `${settings.type}`,\n };\n }\n\n /**\n * Hydrate settings from a JSONable object\n * @param {object} settings Dehydrated settings\n */\n static hydrateSettings(settings) {\n return {\n ...settings,\n type: dh.plot.SeriesPlotStyle[settings.type],\n };\n }\n\n static titleFromSettings(settings) {\n const {\n series,\n xAxis,\n title = `${series.join(', ')} by ${xAxis}`,\n } = settings;\n\n return title;\n }\n\n /**\n * Creates the Figure settings from the Chart Builder settings\n * This should be deprecated at some point, and have Chart Builder create the figure settings directly.\n * This logic will still need to exist to translate existing charts, but could be part of a migration script\n * to translate the data.\n * Change when we decide to add more functionality to the Chart Builder.\n * @param {object} settings The chart builder settings\n * @param {string} settings.title The title for this figure\n * @param {string} settings.xAxis The name of the column to use for the x-axis\n * @param {string[]} settings.series The name of the columns to use for the series of this figure\n * @param {dh.plot.SeriesPlotStyle} settings.type The plot style for this figure\n */\n static makeFigureSettings(settings, table) {\n const { series, xAxis: settingsAxis, type } = settings;\n const title = ChartUtils.titleFromSettings(settings);\n const xAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.X}`,\n position: `${dh.plot.AxisPosition.BOTTOM}`,\n };\n const yAxis = {\n formatType: `${dh.plot.AxisFormatType.NUMBER}`,\n type: `${dh.plot.AxisType.Y}`,\n position: `${dh.plot.AxisPosition.LEFT}`,\n };\n\n return {\n charts: [\n {\n chartType: `${dh.plot.ChartType.XY}`,\n axes: [xAxis, yAxis],\n series: series.map(name => ({\n plotStyle: `${type}`,\n name,\n dataSources: [\n {\n type: `${dh.plot.SourceType.X}`,\n columnName: settingsAxis,\n axis: xAxis,\n table,\n },\n {\n type: `${dh.plot.SourceType.Y}`,\n columnName: name,\n axis: yAxis,\n table,\n },\n ],\n })),\n },\n ],\n title,\n };\n }\n}\n\nexport default ChartUtils;\n"],"file":"ChartUtils.js"}
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/memoize-one/dist/memoize-one.d.ts","../../../node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../icons/dist/index.d.ts","../../iris-grid/dist/DateUtils.d.ts","../../iris-grid/dist/formatters/TableColumnFormatter.d.ts","../../iris-grid/dist/formatters/BooleanColumnFormatter.d.ts","../../iris-grid/dist/formatters/CharColumnFormatter.d.ts","../../iris-grid/dist/formatters/DateTimeColumnFormatter.d.ts","../../iris-grid/dist/formatters/DecimalColumnFormatter.d.ts","../../iris-grid/dist/formatters/DefaultColumnFormatter.d.ts","../../iris-grid/dist/formatters/IntegerColumnFormatter.d.ts","../../iris-grid/dist/formatters/index.d.ts","../../iris-grid/dist/Formatter.d.ts","../../iris-grid/dist/FormatterUtils.d.ts","../../../node_modules/@types/jquery/JQueryStatic.d.ts","../../../node_modules/@types/jquery/JQuery.d.ts","../../../node_modules/@types/jquery/misc.d.ts","../../../node_modules/@types/jquery/legacy.d.ts","../../../node_modules/@types/sizzle/index.d.ts","../../../node_modules/@types/jquery/index.d.ts","../../utils/dist/CanceledPromiseError.d.ts","../../utils/dist/ColorUtils.d.ts","../../utils/dist/DbNameValidator.d.ts","../../utils/dist/DOMUtils.d.ts","../../utils/dist/PromiseUtils.d.ts","../../utils/dist/Pending.d.ts","../../utils/dist/RangeUtils.d.ts","../../utils/dist/TextUtils.d.ts","../../utils/dist/TimeoutError.d.ts","../../utils/dist/TimeUtils.d.ts","../../utils/dist/InvalidMetadataError.d.ts","../../utils/dist/ValidationError.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../utils/dist/TestUtils.d.ts","../../utils/dist/index.d.ts","../../../node_modules/@types/memoizee/index.d.ts","../../../node_modules/popper.js/index.d.ts","../../components/dist/popper/Popper.d.ts","../../components/dist/popper/Tooltip.d.ts","../../components/dist/popper/index.d.ts","../../components/dist/AutoCompleteInput.d.ts","../../components/dist/AutoResizeTextarea.d.ts","../../components/dist/BasicModal.d.ts","../../../node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../components/dist/Button.d.ts","../../components/dist/ButtonGroup.d.ts","../../components/dist/ButtonOld.d.ts","../../components/dist/CardFlip.d.ts","../../components/dist/shortcuts/Shortcut.d.ts","../../components/dist/shortcuts/GlobalShortcuts.d.ts","../../components/dist/shortcuts/ShortcutRegistry.d.ts","../../components/dist/shortcuts/index.d.ts","../../components/dist/context-actions/ContextActionUtils.d.ts","../../components/dist/context-actions/ContextActions.d.ts","../../components/dist/context-actions/ContextMenuItem.d.ts","../../components/dist/context-actions/ContextMenu.d.ts","../../components/dist/context-actions/ContextMenuRoot.d.ts","../../components/dist/context-actions/index.d.ts","../../components/dist/Collapse.d.ts","../../components/dist/Checkbox.d.ts","../../components/dist/SearchInput.d.ts","../../components/dist/ComboBox.d.ts","../../components/dist/CustomTimeSelect.d.ts","../../components/dist/DebouncedSearchInput.d.ts","../../components/dist/DeephavenSpinner.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-window/index.d.ts","../../../node_modules/@types/react-virtualized-auto-sizer/index.d.ts","../../components/dist/ItemList.d.ts","../../components/dist/DraggableItemList.d.ts","../../components/dist/DragUtils.d.ts","../../components/dist/HierarchicalCheckboxMenu.d.ts","../../components/dist/ItemListItem.d.ts","../../components/dist/LoadingOverlay.d.ts","../../components/dist/LoadingSpinner.d.ts","../../components/dist/menu-actions/Menu.d.ts","../../components/dist/menu-actions/DropdownMenu.d.ts","../../components/dist/menu-actions/index.d.ts","../../components/dist/MaskedInput.d.ts","../../components/dist/navigation/MenuItem.d.ts","../../components/dist/navigation/Menu.d.ts","../../components/dist/navigation/Page.d.ts","../../components/dist/navigation/Stack.d.ts","../../components/dist/navigation/index.d.ts","../../components/dist/Option.d.ts","../../components/dist/RadioGroup.d.ts","../../components/dist/RadioItem.d.ts","../../components/dist/Select.d.ts","../../components/dist/SelectValueList.d.ts","../../components/dist/SocketedButton.d.ts","../../components/dist/ThemeExport.d.ts","../../components/dist/TimeInput.d.ts","../../components/dist/TimeSlider.d.ts","../../components/dist/ToastNotification.d.ts","../../components/dist/UISwitch.d.ts","../../components/dist/index.d.ts","../../iris-grid/dist/IrisGridShortcuts.d.ts","../../grid/dist/KeyHandler.d.ts","../../grid/dist/key-handlers/SelectionKeyHandler.d.ts","../../grid/dist/key-handlers/TreeKeyHandler.d.ts","../../grid/dist/key-handlers/EditKeyHandler.d.ts","../../grid/dist/key-handlers/PasteKeyHandler.d.ts","../../grid/dist/key-handlers/index.d.ts","../../grid/dist/GridMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSelectionMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/EditMouseHandler.d.ts","../../grid/dist/mouse-handlers/index.d.ts","../../grid/dist/GridMetricCalculator.d.ts","../../../node_modules/event-target-shim/index.d.ts","../../grid/dist/GridModel.d.ts","../../grid/dist/GridRenderer.d.ts","../../grid/dist/Grid.d.ts","../../grid/dist/GridRange.d.ts","../../grid/dist/GridTestUtils.d.ts","../../grid/dist/GridTheme.d.ts","../../grid/dist/GridUtils.d.ts","../../grid/dist/MockGridModel.d.ts","../../grid/dist/MockTreeGridModel.d.ts","../../grid/dist/errors/PasteError.d.ts","../../grid/dist/errors/index.d.ts","../../grid/dist/index.d.ts","../../iris-grid/dist/IrisGridModel.d.ts","../../iris-grid/dist/IrisGridTableModel.d.ts","../../iris-grid/dist/IrisGridModelFactory.d.ts","../../iris-grid/dist/IrisGridTheme.d.ts","../../iris-grid/dist/IrisGridUtils.d.ts","../../iris-grid/dist/filters/FilterOperator.d.ts","../../iris-grid/dist/filters/FilterType.d.ts","../../iris-grid/dist/filters/index.d.ts","../../iris-grid/dist/TableUtils.d.ts","../../iris-grid/dist/IrisGridRenderer.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationOperation.d.ts","../../iris-grid/dist/sidebar/aggregations/Aggregations.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationEdit.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationUtils.d.ts","../../iris-grid/dist/sidebar/ChartBuilder.d.ts","../../iris-grid/dist/sidebar/CustomColumnBuilder.d.ts","../../iris-grid/dist/sidebar/OptionType.d.ts","../../iris-grid/dist/sidebar/RollupRows.d.ts","../../iris-grid/dist/sidebar/TableCsvExporter.d.ts","../../iris-grid/dist/sidebar/TableSaver.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../iris-grid/dist/sidebar/VisibilityOrderingBuilder.d.ts","../../iris-grid/dist/sidebar/index.d.ts","../../iris-grid/dist/IrisGrid.d.ts","../../iris-grid/dist/index.d.ts","../../log/dist/Logger.d.ts","../../log/dist/DefaultLogger.d.ts","../../log/dist/Log.d.ts","../../log/dist/LogProxy.d.ts","../../log/dist/LogHistory.d.ts","../../log/dist/LoggerLevel.d.ts","../../log/dist/index.d.ts","../src/plotly/Plotly.js","../src/plotly/Plot.js","../src/ChartModel.js","../../jsapi-shim/dist/dh.d.ts","../../jsapi-shim/dist/PropTypes.d.ts","../../jsapi-shim/dist/index.d.ts","../src/ChartTheme.js","../src/ChartUtils.js","../src/Chart.jsx","../../../node_modules/@types/lodash.debounce/index.d.ts","../src/FigureChartModel.js","../src/ChartModelFactory.js","../src/MockChartModel.js","../src/index.ts","../src/ChartTestUtils.js","../src/plotly/__mocks__/Plot.js","../src/plotly/__mocks__/Plotly.js","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bootstrap/index.d.ts","../../../node_modules/@types/braces/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/base.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/glob-base/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/jszip/index.d.ts","../../../node_modules/@types/lodash.clamp/index.d.ts","../../../node_modules/@types/lodash.flatten/index.d.ts","../../../node_modules/@types/lodash.throttle/index.d.ts","../../../node_modules/@types/markdown-to-jsx/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/micromatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/overlayscrollbars/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/pouchdb-find/index.d.ts","../../../node_modules/@types/pouchdb-core/index.d.ts","../../../node_modules/@types/pouchdb-adapter-http/index.d.ts","../../../node_modules/@types/pouchdb-adapter-idb/index.d.ts","../../../node_modules/@types/pouchdb-adapter-websql/index.d.ts","../../../node_modules/@types/pouchdb-mapreduce/index.d.ts","../../../node_modules/@types/pouchdb-replication/index.d.ts","../../../node_modules/@types/pouchdb-browser/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/pretty-hrtime/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/reach__router/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/react-transition-group/Transition.d.ts","../../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../../node_modules/@types/react-transition-group/config.d.ts","../../../node_modules/@types/react-transition-group/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/shortid/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/@types/stylelint/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/Source.d.ts","../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts","../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts","../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts","../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts","../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"38943ef508ccbc71691ff6c14f30e0468a85a4ec22c9e0a4eea2c9ba8ca19352","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9","63ea76eab54e08ce38ada84ddff0b080d6c2e360165071af684b43844b15bda7","98edf9bdfe6c7794349a88d720af3035fd4a68480895e72beaf8ff8e758a33f5","8a2395a5c1a95d05c205b791f012b120b4d02eb50a806e24d69da02c51de9d6f","123b33d472e095eef247713b75d8af051322947c9f82376094e2464f5b2c6c62","3cfca5c9292d8d84fb8f2002fbc638f1ce1116842fcf49da324c3ce428e5ba01","ae8664425db4d0412262eacb152add3880bb26a00b3351c60251836d1b0ff06d","198a7b1868feda59532c0b8c9787a40bc1a016bfeb4f34ac429c72f00d85f480","440c72c435268a4eb551c89fdb9d23b17b8b4313e59865ecff97a45194a4b760","36c864656ff1816fe6bc4bbd36a981ab880e31819010ab32e4c4375a9cd0ffa0","084fe2843779e36cc634a29427dfa6b4ad19bf3fc749a8ab71f8b1845dac8063","e2ed3c88156fb2986622e353fde67b7e215474fc99ad997b0e8f98e9820a2362","590930e5cc30f27e0faadede9dd85b1f36a87345c5502c55c8ad21fe0c4a4972","ead5a4d77393ab3c673b20f171eb4187ed04c17070f6938a52a304ecd9c9f1d9","7c829ae2e0612753dec828fdc84baad4f98a1e0fa60ab79fe101b1020103a26e",{"version":"2a19c7dd007f71b9db87dba915e20d894dbdac8aa8fab5d1c3083a61f2316a5c","affectsGlobalScope":true},{"version":"f3832e609ad73d8001ef05659bea2b8b03ea96026623e814834ff128f5e0f99b","affectsGlobalScope":true},{"version":"a4832e26b82049fc2774c96ca6e1c17b2c204246570a62fdbe7e8ee8af2cd4d4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","d0b93cf4a086095121a40a8a878f81c72783fc819ad055225a36ef829c6f41d4","50eac108cc307665c28801910626932956adcf8dc0dc70ab1939dd0e8aeb6f28","1a68643644167daaea17e2f89d04edd9d1fec7bf881e4fa3ad4cd43d92447ce1","7255a17d460541e2ccca5f485bb58b6fa64bc750047c5e57ce7abf17cc3f4f3d","571ffdcb677c42d897370ca1a616798670d7715361dc099f713f03c067e8c988","1f8d8388b2da5785ef9c169db1493969f8c9e1ea50e1db1194a21708403f2e10","a299dcd51a18896ffb9f1249507d387a996b8d733cd1ee7c0a5fb46b86f88524","2c3d2bc00ffd291568c89e1ea920cf5c41b6b6a532cdc0bcb74e917eaf133f3b","d164084ca52fc07a704d35264d524307e7e8ace196b817d4a86d0b93cf11ebd0","0de99ed9f5d0a953aabe8de8999b0ce24944f36374d36c06abf9dca6e5567368","a756f87e33897fd95428da3288ed3061182b8678e38b48000c53e5499c7f8863","f68abba533f1aee022d1800ab3ad273e163909b97c171c8eea15fa04e3d02280","9b526aac58282b2b9c1afd1969828336c77a81ca52916214ae63a70e256a8032","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f544c98b782364169412ac2bc65143918f9f1dd49880920302693f2eb3bd3570","e5d5ee66044d79018aadeabf3dc39d758d9c45c49c004b3a57b76a974fb346d7","34ef06f1d5e0ae95afb816e93c40f04f93641c11ad06e54b6fbe9335c3238c03","1873db8f2261ba4f248bde3e5bb4c79b1fdc990315054e9604fce8f41ddd1587","7fde24f7b90ddb8aef7ab8f3e2c318babe0c606b7ea5a833369475b0129a05ee","366c22193ba68d3c1ea31d37d98dd5f133fc9e234f07c46656284422bb4209fa","ff60413f9896b702b4e653cf85f6f8246e11482ad4d6859997ca9edafed9cc46","b682e653b63b5aa118887e61cd81a78fc45d4ef8fe95d8c6449742919a5638a4","bbc1e78124f19ccf50225278b700436ce64cf92b0c6b1ca15567431a28371b31","1f93a4dd7096a18c6cf99085327b467de58f3cd7f0f941a8bdc1d7ec4284b301","a822e999d9c1814859735e919c2bd2a11f7d3c8633ab6656215dc386684e07bc","ae1b8ffb16f8dd0a4008ccf2534e6503af171a3c4ea17da590faeb0c41f85f3e","1cfe76cc39491c2f2059192c7486297154f0a517fe9b3bd9d223824a5f803573","acc42289b4e6d8d789b9f3a4c48fe601c23ab6fe747080f1dc99787b8e79d256","9de7ce840e4a5b95405a164d166d010eaa99fd631817ea3b0310ec4e22b98d0e","e2624cd48a969f5f8da7560fed327adddbcb3089897923f9f7d5a7cf04f4e917","21e1b303e758ec4a1e9f703e1e1be8c47c8dd74034c2369fd01e9bfe1da98acc","427a853968c89787bcdc5ba0e0603c6fdca97766e343ceaa5acef230883ba807","33cb56e3cc910266a13ca59281b907459131acc58739c2bd68dab246f8ed01fa","c6d0cb5ad7498c2c977a5340f17bcfcc151609118789bbace2336079f2d9f84a","383d4add4d2b7a9b03bb0b7b9b2f62b70c269e79616b629946b51283c14a92cf","4162810d701126188368ff58526c81e7c4c6a9a32ed26c4b763a5d3535b46748","513b7862a230ed479fb045bbe87d37f9ee91cc20fee15dd4b16c3cc74aa3e514","8ff77a6b5f0b74c681e132e9510f5576a29150ee53b1324efed33d3d7fabd736","7bdf81223f6cfae94a48484223d4b59b8ef609cf680f0fa90941d8e093ff27b0","9fbe4ad05e10d7957283cc4a3aa909e70717c62d51bdc19516ffd75a60c2eaf4","8b423ba6b1f81c80542db7deba332d1938db29f6f127fe169287903abe67fe8d","9c0a4431746ad0073026505df7a5724b4126c0e1f41b90e87c1efa6b8335711d","0ec7fb37f4303f3cac4f35819f0d5d75b3b4692990da2590c63c656729447dfe","ed6fbb1cb7cb8dc283f9d5efa68c17d5a9fc5e32fc481e2be7eccd5077d3afc0","e96e84cd79dac3fb1369911a8e9888308deda9542dcfb19d1540414e9ab64465","616ed304b4a011a969ba5d2aa5fca781d66b3f0c8f3d099e19c7158da36fa07b","163be962fa11ca0e3bc9afd1188701e16f5db0d84f904be3a5327c04bf14c1dc","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","23255560340f60336ff79daf50b3b6432ec0f32f7dd19638d3a2406826a15d49","cbf272d1fef2ab8cca386524e1aa8e06caa3509eb6e724e0008ca613c05e7fdb","f8f0a01a9ec6571933c3b63b6d877d74729fbdab0be2fa87c18999b11357cf32","fca853da554cd762704a9bf8ad62cbf6d55d81c9d69b07b3c8a552367f4976d6","6b8d8f68865166b7f761ccdea7a66018f0452ddb7c6f75bf5cbaa31e6163af8f","d9cef8e439c407166963fa89b317d3ea7367e204035611447c9765786026f03b","ca888feddeab794c01fb1bec893ff46186801a30bca77c8a1aa28477f7e6f839","bb96345dfdd3b0695f5281537427e38fa85cb79449e3c6b59151bb7d753ef6f7","2561fd263d1d42554d0de99369f6fb352981090e2de0966b2e257891abf9977a","b01b764b8b1ce1376a70aa1bde2914093b36810a2a3e60cc9fd8f2741490a8f9","e6047a9c095d3b4a903aea90b49815be068476f1719e76766b7792ee21310f3a","cdcd29d866abedc194a88851871320fbb9c29e1c4868583b1f91ee2786acb818","c02107d9cae7a0c7541e8af0f4e0497650b1494e561e409e7cb90a12bc65ed09","5e62225c303695c8511d3831bca37c141931fd584e3aa1c8c5dd4b57cf01b1d0","1c3dd3b5d7eee485481470a75bd1829ee8e0388e87c8c8f8a8418f702592876a","53336c5924937a0a2a4ba1a515499f48092e4dd853386e77276c0a4ff8a1fa50","5a42225ecf779e7d42b44ff91cd7f842421835f28287e295e42622aa51aeeb6f","baab49106b672deb07dcd3e31333e4a2539970b5db9ee896aedbdba3ca2400e5","2af60becd168c31f931c6839f2cb126713bb0f556780b07959afd04b8311eade","826ea84343ee53323b8b67320019287543a15c1f25ad163552f4adfba79368da","7181cfa9a4f05524e825271e409017810c1bc6a4b9544e05be5bd59ee76ca691","ad9afc2c60e7303174e70e6cbfc1eca63d8a770855d5fa3ddaac8769b9d93658","7e6b3017bd81ce434b27ae46cee6bdc5850db0e0d75e6a1d45c6c23e17eb135b","9304c3176830887fd3bbb010a9542ce549397b63624a51c8e7f2be032adb76e9","6c9c7d76d7f525a366d5ebdb0b42bccfab0ec7bdc0bce4db5b97573ee0970d3e","c7322d04c36fbd32b9035e07416c30073fbadf0bb6c1e855425f12c1df645aee","198c3858acc28364fb1cdf1d99d140fd9e0f3732c57ccd40a1752bcf8f318a0b","0625a691c77d71dd48fc83a59bff500dfbf3bdc1fe9c079b64bcaf078b5158d4",{"version":"662564f7dc409b31c6ad48129d12a1320c132b45bcafd3a990d0f8f545ce0529","affectsGlobalScope":true},"49616c77d1f7669df57e8cc8afccd8454730bd5e3fa785edcfb3c0ba504cca3f","4e1cb04564eb20088c531c817c8f6c4db49620ef50376f35245642c67eb145ce","d3add4e7d6efaf837f6d0db385083d6b23a484c2c6079acbc8fa892c201487c7","8376014c53e41b0d5f96a78fdd2d8a8758640ad2f6ce292b5c66aebd6d088b46","03f3ca4f21862f79e971b5ca6b63805895cff6ccbd7ed31d2fd7327f19f5e028","f2b9951257d06d78828f43dc4047510ec21fe000f21cefd58684476db831ac5f","536fb1e2b80cceb77644b414e26ce29a8417f94a72f867f57e2e0c2db980a9ce","f0b0ef0ccfe0beeaa902aacd48798cc9a7f755546481cb149c4a57c7956c6d0a","2476381be38618f2937afa95c337739684aa174576a278139b7b08b6ab1f5341","c5d12b850beb2feb0369374909dc30fea794f25baaae8aa6f23ee533d80dfbac","ca8d29244d394cdc4cbfbddbbbe183bdcdb25daeb1814777bd1b988efc963bc5","e6d39558cb48d3ecf1e18dcfea09f5b891d97e0fc287dec68440088e88750930","0a5939cc81f0c470f3cae077943ab1a8f27bd0e0ef31fb6d9999c1099d5c1557","da1c29ce8da2803892f72c74fdb05992765ec7d5d9a6ef4dd82f3534e7d4773e","deb2c4a4f7e35965dde684402787eac08ca9143178a75b2c441d07fa7830fcbe","069d9515e3cb0d254928b11bf7da7e22afddf1d2a14f239421a128952069f898","c33ff15f5bb2ec9fe792288ee8a6e61a45210aad52007bc573d11e49a17542de","0cb0bb747f030197835fd42fab515388f3cd9745256f8b9badb0ed33477b4275","40d2b100e0cf82c6a297597f2f68f152ed9bd67533bbab359c5cc3d2d43a0e98","47c12b9b24e5bfd2879de2e2d1e921b2fd984e11c2086460ef3110408135641d","43eb52bf5a546b3f84e7da5b4eb1305f9ecfe9f5a3f41b85d620d1354a5f3646","63633f5796c4cf53210ce75f02e5d6e81b88012f5c8832af32c35d0a8b75cdde","520872f7c5dd8e4aa5eded9d68906f287f0e7e1b223caa2826120dafea9b8410","a2847912ac2cc3df01cec42991da81b7c5dcb1f89ec690b5412b15f831ea687e","3cb00f0b39f0dbc16cf727d2c38ec9913b64b666b256fbc683a5eadd9fc767b6","0a52641f1e38e5b7a7edb7eebbd6ad06e561db7c017f397323a263d74dd58e3f","2ceab74277f8e35d481a528c74e2c992429b2b75b8f0873fcd541cab9b210f0f","e442f58a3f157713f6fe0cb7fe25dfdf9b499cceed0e126eb112451c4bda9f74","7db9398e6aee094d1e21d9bea2205ae3e94f39effd58c868db972e8fdca3b382","93a239166429cef36a11b58831be7493a8b6083297819b864f64fe5a6c51769d","7202799c12b024a0ad8bb7d331a2abfa37000f7d4d4400eedaf0e8de86e9325d","3158f69a5641c10fa2014100c5e7f0884b6d4a0cce43d32af91009a5e8031674","752fa9ab4f022a094d6c036e556ab0cd65b8c599db46b0ab6ef20c5f541347c3","85accdf9e385b0b171b1e536f1ddfb7574b2ad059f28dc9fec681d13383cae29","5e5011ba7c0d3ecb7a96f7bbdbd0b0c5e030e06a8084b9cecc8d51813707fdd1","3305eb25f74ae5fe0ae670a2ef5f5cfe12a6b890d4ddd019e232248aafb69041","a345e40ec66caa5e999bcb4e39443b41024c7dd83dcae1b271dfb9f3baf42fe0","e7c43187ecd8e6fd5ac183d8fab70d262601b83ac8a350f77102e501b70c3399","d7a43c368e3a7eeae8570e6b731ea30797a436dfe413308d909ba64d7ee40d90","f22947fc62ea413bdb41dccd2dc03ad90c517bf1499988e7e4e06dc4cfe4d0e4","8cbb340cf3ddabe63ca08a8a8ee687cbd2e2240efc203829d88d6bfc5442af9f","30e9979007b862c3653edc1bcdd9c3b2daac943d86e5dc45ea4568ed5e717480","ecac33101e9b0de576ced13eed08c3203f13524956f92437a49291cc1aace4f9","ad8c9effc950e5a2051075b274c45876a76ffb88341994b278468e62a4bf39fc","78a9c7b35d8ea1a9e15bb1926726f4d19121b57bc3314ac6e7c659dbca213258","78294e1333be0e2a3c02f253721dacd0c205b12689f9a2992a6b9392c9e8b0f6","7fefa48fa54e87d74f1ebafe6934fb8be19b17ffa65a12d5dea921da09f5fc30","02e8c7670313db815cfc304c046b77fde0ad6d1de4c7f1527a12430ed2b73568","339fa6c313815d88228c93adc09832f4386c890844b6462cbbcde1cea0c47a82","230bc82cfb0df428eee75a194cbd1768a2dcd35ca39d669e771ae31380d5589e","584dc1976391a7579cb93466a54df2263ce0c7a4811897cb9777cbeef22a26c2","3b5f29d4e9827cdfef6b008bc5b00f1458fcb7218097fad40945d90322efa278","00566869cb63f7915307b242d07724f7c28eaa51724c36fcc1662d3b6f62a594","1f20b8737e2c06851c822b26f427fa97cbb687f26b873db7cc1321f8a7f5f787","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","378df8bbbb9e3f6fca05d58f644aab538e1062eab5e778fb0b83d41125df246d","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"414535152cbb6d2ef11c94953a793e18cb23c5329d439dacf66183adf87989fd","fbf3b885d9bab5d9061d4b1edc2ff4fd845ea1c28e5dcd34ac4a43d156161f46","fc9726976c91a37ec5f4c3fa91e46dedba08232d0b695460c348ed1bb0268d25","39eaa898927709414259421f4310d4a9bbb943b4dcb82c7a5cd75f0142c86273","5f34e74f9d889817c1388da54dbfdb28a36af5676c396fa3041309690bfa9ade","b0e23a13de5e00df2097f3bbc0ba67ecc18946f10222c2d4571814ba718467d7","2f89dab4002cafa419a8385e6cd54f3fd5458a024feb0f79e9967bf4c47157f7","e841f45cbf880c37dfc3279dd87523670ac8bf5477541a682ab10669ae6db0f0","4dfb0de036b79d6c4851ad323b7b8ba8d2eff92099edb928c28e2b8f151b4c73","b59fc967b467026aeb1dc3f3fc02c26b8b0b613212ade066d58cb1050b774da1","b10686e239ffd69ba14643969dd14c8be05f0fabeaff6490637efd034686474a","1f46fefd83929ee6cc2714d2e1689e6bd8e39dbfba337a59a4e124928fa6678c","af9541a8f9e0991338378be681fa333f9c84b0846579b4f5d9189e5266d7acf8","cc6194741830edfe6eda4f51dd4b8c2708a14ba1eafd8fc95cbb2f94f699d48b","0637ca78a74b77392effa72e38c2951cce0bb5f7019276f312f85f3d308eb5ef","2b0dc274f4e10794352b468f179cf8b5a9a0203406d8185717dc93a5d7ea9136","53c520b2ebbd7c565fb533caffe747807ae5adbff2f50178a011bad4c334160c","dc0b70f6d69942102028e513dd78c86c81f7fa684dda1468d84e2594cda70f07","c89c0259698addaa83775afaca4d29ea23f97a49f01078b2b3b233c37d263999","80aef8308811864da7ed1e0eb0eca70497e9a2c953bbaf6db2f98faef2655f20","7044c407773c0900946b7a02f3a0e7e5e79af8b0a32b14aeb419b7beedfb3fcd","d8ce14c69633699d7c76f2ad94f78e882071f7863706f8e6e0ecc31800169e67","ab7d96fca46a5075458fcbca5ca3d7059059ef04e426f8032013d3c3a5351933","bf351d3e9fc47ddec96c6a219d0b6d96c43c18fc376934615d1702ff334ee7de","e24d10ccda341f500740a2d46822b279969d98664f92e0f1c30f6ef796254d9d","f80c6be079ec1df24ab5e64fc860248767f86421e05de7896a493742486f1ee0","b1eb670eee94eebc06e77d75b6c606491f84d01122b2e9edef4edeb9ea143318","0c9f55f247187045cc1432f0d81c94bcf56fb409acb163d408bfd5a1793447a5","c13e280d244dc0829d954089e1d0446455efdb72fb4bdc2e3f0561ffbc66c905","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e",{"version":"24ff7ac33bdb941a8cd04408a31ba15fafab9684f751e7e88234813b89712c19","affectsGlobalScope":true},"40304c033bb6e39f0eb01b106d29523950148dfc3cd547ddb500167871171281",{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","55cb77e6ff3d95a68568446f53d3f1dc8fca753575d7c60471a865685f08dcc3","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"dda27180d5ff550ace8378f5df0f7a26e616f0c4e310c77e94329e2355f9c255","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","12a01de318341fefb7be11f22eb4bf28478a5f137b1b4546c509156e9c158198","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","5aa2a9a778a055cd668ea419ea80ba6e195210eb37d47707a1a58886aa4d80f0","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","9e6a556cf660a94faa51f5bce6ed009b9e02373546a4c67925da909f36c039d0","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"61dd09b57a0a5cf1486c3ceb3a18ad23babfe602c323035ce3d01544c5e3e0b6","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","b1b1adc57093310531ddf3f78b21bda16c30f7319088b0981449476a6616cff3","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","d1ae472dde31ac39e68d52e1e21dcccba3989d146b7b8472f03525d0caad1775","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","de1d6e224048139baf7494237a9231be6bab9e990fb239c7825bfd38b06d8c90","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","abc2748988e07e7e754b43cfcfadca4d45f3449eb4c0be503f13630a3f15f22b","6109487f86bc33b14eebb35cbc878b591328e19657d92bc6c61b667f7f9594c8","96b729b46007058fceb10567283275a023415f724af78e91cab3ac7073c19635","620a033e8ff8ffc3d280c3d78981d8a929d0a8c14574a3b87413d99d7f02fadd","9c138947e4cf970491111d971aa615db8353c7f0efc72bd84d8ad6e4743079c5","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","1a255ad66d2b50f7b42eca69228b9587878cf06900780ad57a306a933c6eaeb4","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","062bd2910098fc059ba93e347649b3e126c555f7b144033d21d3f8ef63d3e39b","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","fda7ad096a1619fbae01b3d869cc82e29116f22be50133ac8fb08cee21279acd","9751247ee3bbcf1c63592f0f4dafb44559680b2b3e5736b7f0578c6a737d74c8","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26",{"version":"2d2482647045d334fcfce6eefa3340db2800cb2d0814e7b58d4f3b53c274d8ec","affectsGlobalScope":true},{"version":"216033f81a7bbc9e0725f6a38f60b6acdce6381e1f0652efc0705a2e6a6d5a70","affectsGlobalScope":true},{"version":"838524a3cc660f7bbb104ffa15febad659d1ef1633dac47340bfbfcbbbffdb08","affectsGlobalScope":true},{"version":"50a03e74fae4542ecfb326b34517ec2e058aee15bcb60af5b2e41c5e2db0d079","affectsGlobalScope":true},{"version":"d252bde46b7594f8f90a45d59181b08134ee8c4919ebb2ba7088ba26056bf621","affectsGlobalScope":true},{"version":"e7a62a242d0948ba6687f0442bb26668444114bc64ca629511676e3ffec77e3f","affectsGlobalScope":true},{"version":"1abdfe21f6b99b864965f9dc5073c49f0c0f3d5e8e1fe498fb94bd0a479d3afe","affectsGlobalScope":true},"4d737cdd77685ed65bd61d375375cae446fb0f46f711bbb3ef3f81a350212569","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","94a274c882504de552300fc5d6be141820041e9e2c530064ea10a0b76e2f905f","c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51",{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},"4370c91e46f6992a89e3979c50434cf932088e1b5ae6e3a5214d778634dea768",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","ed3b711f533ddb3a5451f4c4bb0df3a0b95e9d0433b3b7834644dd1718d06d31","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","30783d97bd0231ae2c4b9320043d61442a8177e81c7df826a5536b95fdd63280","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","aec0cabbdfacf43db998d8e50ee6f1e72131d24b5018dfb84f14806717baa0a6","e32dad799d088c53cbe1da736e34cad03027d56dd2fc77d484a67100278bc4bd","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","9d74c7330800b325bb19cc8c1a153a612c080a60094e1ab6cfb6e39cf1b88c36","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","cd6a7c1c2a6461c6868601ca2144a41f8ee6d4a85d4b4cf1deb651e6c2ebc9e5",{"version":"3a1e422f919c70fca66e94dc641ad8d9732b3d2533ac047b8a9aaca9eea3aa10","affectsGlobalScope":true},"f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"target":4},"fileIdsList":[[250],[53],[250,251,252,253,254],[250,252],[71,95],[303],[305],[306,307],[306],[309],[311],[50,304],[313,314,315,316],[317],[269,270,303,318],[270,303],[322],[50],[327],[328],[88,90],[66,67,68,69,70],[221],[209,211,212,213,214,215,216,217,218,219,220,221],[209,210,212,213,214,215,216,217,218,219,220,221],[210,211,212,213,214,215,216,217,218,219,220,221],[209,210,211,213,214,215,216,217,218,219,220,221],[209,210,211,212,214,215,216,217,218,219,220,221],[209,210,211,212,213,215,216,217,218,219,220,221],[209,210,211,212,213,214,216,217,218,219,220,221],[209,210,211,212,213,214,215,217,218,219,220,221],[209,210,211,212,213,214,215,216,218,219,220,221],[209,210,211,212,213,214,215,216,217,219,220,221],[209,210,211,212,213,214,215,216,217,218,220,221],[209,210,211,212,213,214,215,216,217,218,219,221],[209,210,211,212,213,214,215,216,217,218,219,220],[257],[272,292,303,339,340],[272,286,303],[300,301],[269,270,277,286],[261,269,277],[293],[265,270,278],[286],[267,269,277],[269],[269,271,286,292],[270],[277,286,292],[269,270,272,277,286,289,292],[272,289,292],[302],[292],[267,269,286],[259],[291],[284,293,295],[277],[258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299],[283],[269,271,286,292,295],[348],[348,349,350,351,352,353],[310,347],[347,348],[50,324,361],[50,363],[50,365],[365,366,367,368,369],[46,47,48,49],[377],[376],[303,383,384,385,386,387,388,389,390,391,392,393],[382,383,392],[383,392],[374,382,383,392],[383],[265,382,392],[382,383,384,385,386,387,388,389,390,391,393],[265,303,376,379,380,381,394],[397],[84,85],[84,85,86,87],[89],[48,50,51,52,54,225,232,233,234,235,240],[51],[51,238,240,243],[51,238],[51,225,232,238,239],[51,94,232,235,238,240,242],[51,235,239,240],[51,235,240,241,243,244,245],[51,233],[50,51],[48,50,94,95,98],[48,50],[50,102],[48,50,94,95,98,119],[50,54,95],[50,119],[50,93,94,124,127],[50,54],[50,93,94,125,126],[50,94],[50,103],[50,54,110],[50,111],[50,93,111],[50,111,114],[111,112,113,115],[71,93,98,99,100,101,103,104,105,106,110,116,117,118,119,120,121,122,123,127,128,129,130,131,132,133,136,137,142,143,144,145,146,147,148,149,150,151,152,153],[50,95,98,111,134],[135],[50,138],[138,139,140,141],[48,50,95],[50,96],[96,97],[107],[107,108,109],[48,50,156,161,162,174,175,177,178],[176],[94],[180],[179],[177],[94,184],[186],[156,161,162,174,175,177,178,179,180,181,182,183,184,185,187],[156,179],[157,158,159,160],[162,179],[162],[165],[163,164,166,167,168,169,170,171,172,173],[63],[48,50,53,93,94,154,188,189,198,223],[64,188],[64],[188],[154],[64,93,94,188,189],[93,196],[194,195],[56],[56,57,58,59,60,61,62],[55,64,65,155,189,190,191,192,193,197,224],[48,50,189],[48,50,94,189],[48,50,188,189],[48,50,64],[48,50,94,189,221],[50,200],[199],[50,199],[200,201,202,203,204,205,206,207,208,222],[48],[236,237],[226],[227],[229],[226,228,229,230,231],[76],[91],[72,73,74,75,76,77,78,79,80,81,82,83,92]],"referencedMap":[[252,1],[102,2],[255,3],[251,1],[253,4],[254,1],[256,5],[304,6],[306,7],[308,8],[307,9],[310,10],[312,11],[311,12],[317,13],[314,14],[319,15],[321,16],[323,17],[324,18],[328,19],[329,20],[91,21],[71,22],[331,6],[332,23],[242,23],[333,23],[334,23],[210,24],[211,25],[209,26],[212,27],[213,28],[214,29],[215,30],[216,31],[217,32],[218,33],[219,34],[220,35],[221,36],[335,18],[336,17],[337,37],[341,38],[339,39],[302,40],[261,41],[262,42],[263,43],[264,44],[265,45],[266,46],[268,47],[269,47],[270,48],[271,49],[272,50],[273,51],[274,52],[303,53],[275,47],[276,54],[277,55],[280,56],[281,57],[284,47],[285,58],[286,47],[289,59],[300,60],[291,59],[292,61],[294,45],[296,62],[297,45],[343,47],[349,63],[350,63],[351,63],[354,64],[348,65],[347,63],[352,63],[353,66],[359,18],[124,18],[360,18],[362,67],[363,68],[364,18],[366,69],[368,18],[365,18],[367,69],[370,70],[126,18],[125,18],[50,71],[51,18],[371,6],[378,72],[380,73],[394,74],[393,75],[384,76],[385,77],[386,77],[387,76],[388,76],[389,76],[390,78],[383,79],[391,75],[392,80],[395,81],[398,82],[86,83],[88,84],[87,83],[377,73],[90,85],[241,86],[235,87],[244,88],[247,89],[239,87],[240,90],[243,91],[245,92],[246,93],[234,94],[233,87],[248,95],[249,87],[99,96],[100,97],[101,18],[103,98],[104,97],[105,18],[106,18],[118,18],[117,97],[120,99],[121,100],[122,101],[123,18],[128,102],[130,103],[127,104],[131,18],[132,18],[133,18],[137,18],[143,18],[144,18],[145,18],[119,18],[146,18],[147,105],[148,18],[150,18],[151,18],[152,106],[153,18],[111,107],[112,108],[114,109],[113,108],[115,110],[116,111],[154,112],[135,113],[134,108],[136,114],[139,115],[138,98],[140,18],[141,18],[142,116],[96,117],[97,118],[98,119],[108,120],[107,18],[109,120],[110,121],[179,122],[177,123],[178,124],[181,125],[183,125],[156,126],[184,127],[185,128],[187,129],[188,130],[159,131],[160,131],[157,131],[158,131],[161,132],[173,133],[164,134],[166,135],[167,134],[168,134],[169,135],[170,134],[171,134],[163,134],[165,134],[172,134],[174,136],[54,2],[64,137],[224,138],[189,139],[191,140],[198,141],[155,142],[190,143],[197,144],[196,145],[57,146],[58,146],[59,146],[60,146],[61,146],[62,146],[63,147],[225,148],[203,149],[204,149],[206,150],[207,151],[208,152],[222,153],[201,154],[202,155],[200,156],[223,157],[237,158],[238,159],[227,160],[228,161],[230,162],[232,163],[77,164],[92,165],[93,166]],"exportedModulesMap":[[252,1],[102,2],[255,3],[251,1],[253,4],[254,1],[256,5],[304,6],[306,7],[308,8],[307,9],[310,10],[312,11],[311,12],[317,13],[314,14],[319,15],[321,16],[323,17],[324,18],[328,19],[329,20],[91,21],[71,22],[331,6],[332,23],[242,23],[333,23],[334,23],[210,24],[211,25],[209,26],[212,27],[213,28],[214,29],[215,30],[216,31],[217,32],[218,33],[219,34],[220,35],[221,36],[335,18],[336,17],[337,37],[341,38],[339,39],[302,40],[261,41],[262,42],[263,43],[264,44],[265,45],[266,46],[268,47],[269,47],[270,48],[271,49],[272,50],[273,51],[274,52],[303,53],[275,47],[276,54],[277,55],[280,56],[281,57],[284,47],[285,58],[286,47],[289,59],[300,60],[291,59],[292,61],[294,45],[296,62],[297,45],[343,47],[349,63],[350,63],[351,63],[354,64],[348,65],[347,63],[352,63],[353,66],[359,18],[124,18],[360,18],[362,67],[363,68],[364,18],[366,69],[368,18],[365,18],[367,69],[370,70],[126,18],[125,18],[50,71],[51,18],[371,6],[378,72],[380,73],[394,74],[393,75],[384,76],[385,77],[386,77],[387,76],[388,76],[389,76],[390,78],[383,79],[391,75],[392,80],[395,81],[398,82],[86,83],[88,84],[87,83],[377,73],[90,85],[241,86],[235,87],[244,88],[247,89],[239,87],[240,90],[243,91],[245,92],[246,93],[234,94],[233,87],[248,95],[249,87],[99,96],[100,97],[101,18],[103,98],[104,97],[105,18],[106,18],[118,18],[117,97],[120,99],[121,100],[122,101],[123,18],[128,102],[130,103],[127,104],[131,18],[132,18],[133,18],[137,18],[143,18],[144,18],[145,18],[119,18],[146,18],[147,105],[148,18],[150,18],[151,18],[152,106],[153,18],[111,107],[112,108],[114,109],[113,108],[115,110],[116,111],[154,112],[135,113],[134,108],[136,114],[139,115],[138,98],[140,18],[141,18],[142,116],[96,117],[97,118],[98,119],[108,120],[107,18],[109,120],[110,121],[179,122],[177,123],[178,124],[181,125],[183,125],[156,126],[184,127],[185,128],[187,129],[188,130],[159,131],[160,131],[157,131],[158,131],[161,132],[173,133],[164,134],[166,135],[167,134],[168,134],[169,135],[170,134],[171,134],[163,134],[165,134],[172,134],[174,136],[54,2],[64,137],[224,138],[189,139],[191,140],[198,141],[155,142],[190,143],[197,144],[196,145],[57,146],[58,146],[59,146],[60,146],[61,146],[62,146],[63,147],[225,148],[203,149],[204,149],[206,150],[207,151],[208,152],[222,153],[201,154],[202,155],[200,156],[223,157],[237,158],[238,159],[227,160],[228,161],[230,162],[232,163],[77,164],[92,165],[93,166]],"semanticDiagnosticsPerFile":[252,250,53,102,255,251,253,254,256,257,304,306,308,307,305,310,312,311,313,317,314,316,320,319,321,323,324,325,326,327,328,329,91,67,66,71,69,68,315,330,331,332,242,333,334,210,211,209,212,213,214,215,216,217,218,219,220,221,335,336,94,337,318,338,309,340,341,339,301,259,302,260,261,262,263,264,265,266,267,268,269,270,271,258,298,272,273,274,303,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,300,291,292,293,294,295,299,296,297,342,343,344,345,346,349,350,351,354,348,347,352,353,355,356,48,357,358,359,124,360,362,363,364,366,368,365,367,369,370,126,125,46,50,51,371,372,49,373,70,374,375,378,379,380,322,396,394,393,384,385,386,387,388,389,390,383,391,392,382,395,397,398,381,47,176,84,86,88,87,85,52,95,377,90,89,361,376,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,42,43,44,1,9,45,241,235,244,247,239,240,243,245,246,234,233,248,249,99,100,101,103,104,105,106,118,117,120,121,122,123,129,128,130,127,131,132,133,137,143,144,145,119,146,147,148,149,150,151,152,153,111,112,114,113,115,116,154,135,134,136,139,138,140,141,142,96,97,98,108,107,109,110,179,175,177,162,180,178,181,182,183,156,184,185,186,187,188,159,160,157,158,161,173,164,166,167,168,169,170,171,163,165,172,174,54,55,64,65,224,189,191,198,155,190,192,193,197,194,195,196,57,58,59,60,61,62,56,63,225,203,204,205,206,207,208,222,201,199,202,200,223,237,236,238,227,228,230,229,226,231,232,72,73,75,74,82,77,76,78,92,79,81,80,83,93]},"version":"4.3.2"}
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/memoize-one/dist/memoize-one.d.ts","../../../node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../icons/dist/index.d.ts","../../iris-grid/dist/DateUtils.d.ts","../../iris-grid/dist/formatters/TableColumnFormatter.d.ts","../../iris-grid/dist/formatters/BooleanColumnFormatter.d.ts","../../iris-grid/dist/formatters/CharColumnFormatter.d.ts","../../iris-grid/dist/formatters/DateTimeColumnFormatter.d.ts","../../iris-grid/dist/formatters/DecimalColumnFormatter.d.ts","../../iris-grid/dist/formatters/DefaultColumnFormatter.d.ts","../../iris-grid/dist/formatters/IntegerColumnFormatter.d.ts","../../iris-grid/dist/formatters/index.d.ts","../../iris-grid/dist/Formatter.d.ts","../../iris-grid/dist/FormatterUtils.d.ts","../../../node_modules/@types/jquery/JQueryStatic.d.ts","../../../node_modules/@types/jquery/JQuery.d.ts","../../../node_modules/@types/jquery/misc.d.ts","../../../node_modules/@types/jquery/legacy.d.ts","../../../node_modules/@types/sizzle/index.d.ts","../../../node_modules/@types/jquery/index.d.ts","../../utils/dist/CanceledPromiseError.d.ts","../../utils/dist/ColorUtils.d.ts","../../utils/dist/DbNameValidator.d.ts","../../utils/dist/DOMUtils.d.ts","../../utils/dist/PromiseUtils.d.ts","../../utils/dist/Pending.d.ts","../../utils/dist/RangeUtils.d.ts","../../utils/dist/TextUtils.d.ts","../../utils/dist/TimeoutError.d.ts","../../utils/dist/TimeUtils.d.ts","../../utils/dist/InvalidMetadataError.d.ts","../../utils/dist/ValidationError.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../utils/dist/TestUtils.d.ts","../../utils/dist/index.d.ts","../../../node_modules/@types/memoizee/index.d.ts","../../../node_modules/popper.js/index.d.ts","../../components/dist/popper/Popper.d.ts","../../components/dist/popper/Tooltip.d.ts","../../components/dist/popper/index.d.ts","../../components/dist/AutoCompleteInput.d.ts","../../components/dist/AutoResizeTextarea.d.ts","../../components/dist/BasicModal.d.ts","../../../node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../components/dist/Button.d.ts","../../components/dist/ButtonGroup.d.ts","../../components/dist/ButtonOld.d.ts","../../components/dist/CardFlip.d.ts","../../components/dist/shortcuts/Shortcut.d.ts","../../components/dist/shortcuts/GlobalShortcuts.d.ts","../../components/dist/shortcuts/ShortcutRegistry.d.ts","../../components/dist/shortcuts/index.d.ts","../../components/dist/context-actions/ContextActionUtils.d.ts","../../components/dist/context-actions/ContextActions.d.ts","../../components/dist/context-actions/ContextMenuItem.d.ts","../../components/dist/context-actions/ContextMenu.d.ts","../../components/dist/context-actions/ContextMenuRoot.d.ts","../../components/dist/context-actions/index.d.ts","../../components/dist/Collapse.d.ts","../../components/dist/Checkbox.d.ts","../../components/dist/SearchInput.d.ts","../../components/dist/ComboBox.d.ts","../../components/dist/CustomTimeSelect.d.ts","../../components/dist/DebouncedSearchInput.d.ts","../../components/dist/DeephavenSpinner.d.ts","../../../node_modules/@types/react-beautiful-dnd/index.d.ts","../../../node_modules/@types/react-window/index.d.ts","../../../node_modules/@types/react-virtualized-auto-sizer/index.d.ts","../../components/dist/ItemList.d.ts","../../components/dist/DraggableItemList.d.ts","../../components/dist/DragUtils.d.ts","../../components/dist/HierarchicalCheckboxMenu.d.ts","../../components/dist/ItemListItem.d.ts","../../components/dist/LoadingOverlay.d.ts","../../components/dist/LoadingSpinner.d.ts","../../components/dist/menu-actions/Menu.d.ts","../../components/dist/menu-actions/DropdownMenu.d.ts","../../components/dist/menu-actions/index.d.ts","../../components/dist/MaskedInput.d.ts","../../components/dist/navigation/MenuItem.d.ts","../../components/dist/navigation/Menu.d.ts","../../components/dist/navigation/Page.d.ts","../../components/dist/navigation/Stack.d.ts","../../components/dist/navigation/index.d.ts","../../components/dist/Option.d.ts","../../components/dist/RadioGroup.d.ts","../../components/dist/RadioItem.d.ts","../../components/dist/Select.d.ts","../../components/dist/SelectValueList.d.ts","../../components/dist/SocketedButton.d.ts","../../components/dist/ThemeExport.d.ts","../../components/dist/TimeInput.d.ts","../../components/dist/TimeSlider.d.ts","../../components/dist/ToastNotification.d.ts","../../components/dist/UISwitch.d.ts","../../components/dist/index.d.ts","../../iris-grid/dist/IrisGridShortcuts.d.ts","../../grid/dist/KeyHandler.d.ts","../../grid/dist/key-handlers/SelectionKeyHandler.d.ts","../../grid/dist/key-handlers/TreeKeyHandler.d.ts","../../grid/dist/key-handlers/EditKeyHandler.d.ts","../../grid/dist/key-handlers/PasteKeyHandler.d.ts","../../grid/dist/key-handlers/index.d.ts","../../grid/dist/GridMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSelectionMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts","../../grid/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts","../../grid/dist/mouse-handlers/EditMouseHandler.d.ts","../../grid/dist/mouse-handlers/index.d.ts","../../grid/dist/GridMetricCalculator.d.ts","../../../node_modules/event-target-shim/index.d.ts","../../grid/dist/GridModel.d.ts","../../grid/dist/GridRenderer.d.ts","../../grid/dist/Grid.d.ts","../../grid/dist/GridRange.d.ts","../../grid/dist/GridTestUtils.d.ts","../../grid/dist/GridTheme.d.ts","../../grid/dist/GridUtils.d.ts","../../grid/dist/MockGridModel.d.ts","../../grid/dist/MockTreeGridModel.d.ts","../../grid/dist/errors/PasteError.d.ts","../../grid/dist/errors/index.d.ts","../../grid/dist/index.d.ts","../../iris-grid/dist/IrisGridModel.d.ts","../../iris-grid/dist/IrisGridTableModel.d.ts","../../iris-grid/dist/IrisGridModelFactory.d.ts","../../iris-grid/dist/IrisGridTheme.d.ts","../../iris-grid/dist/IrisGridUtils.d.ts","../../iris-grid/dist/filters/FilterOperator.d.ts","../../iris-grid/dist/filters/FilterType.d.ts","../../iris-grid/dist/filters/index.d.ts","../../iris-grid/dist/TableUtils.d.ts","../../iris-grid/dist/IrisGridRenderer.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationOperation.d.ts","../../iris-grid/dist/sidebar/aggregations/Aggregations.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationEdit.d.ts","../../iris-grid/dist/sidebar/aggregations/AggregationUtils.d.ts","../../iris-grid/dist/sidebar/ChartBuilder.d.ts","../../iris-grid/dist/sidebar/CustomColumnBuilder.d.ts","../../iris-grid/dist/sidebar/OptionType.d.ts","../../iris-grid/dist/sidebar/RollupRows.d.ts","../../iris-grid/dist/sidebar/TableCsvExporter.d.ts","../../iris-grid/dist/sidebar/TableSaver.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../iris-grid/dist/sidebar/VisibilityOrderingBuilder.d.ts","../../iris-grid/dist/sidebar/index.d.ts","../../iris-grid/dist/IrisGrid.d.ts","../../iris-grid/dist/index.d.ts","../../log/dist/Logger.d.ts","../../log/dist/DefaultLogger.d.ts","../../log/dist/Log.d.ts","../../log/dist/LogProxy.d.ts","../../log/dist/LogHistory.d.ts","../../log/dist/LoggerLevel.d.ts","../../log/dist/index.d.ts","../src/plotly/Plotly.js","../src/plotly/Plot.js","../src/ChartModel.js","../../jsapi-shim/dist/dh.d.ts","../../jsapi-shim/dist/PropTypes.d.ts","../../jsapi-shim/dist/index.d.ts","../src/ChartTheme.js","../src/ChartUtils.js","../src/Chart.jsx","../../../node_modules/@types/lodash.debounce/index.d.ts","../src/FigureChartModel.js","../src/ChartModelFactory.js","../src/MockChartModel.js","../src/index.ts","../src/ChartTestUtils.js","../src/plotly/__mocks__/Plot.js","../src/plotly/__mocks__/Plotly.js","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bootstrap/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/base.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cheerio/index.d.ts","../../../node_modules/@types/color-name/index.d.ts","../../../node_modules/@types/color-convert/conversions.d.ts","../../../node_modules/@types/color-convert/route.d.ts","../../../node_modules/@types/color-convert/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/enzyme/index.d.ts","../../../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/eslint/lib/rules/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/is-function/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/jszip/index.d.ts","../../../node_modules/@types/lodash.clamp/index.d.ts","../../../node_modules/@types/lodash.flatten/index.d.ts","../../../node_modules/@types/lodash.throttle/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/npmlog/index.d.ts","../../../node_modules/@types/overlayscrollbars/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/pouchdb-find/index.d.ts","../../../node_modules/@types/pouchdb-core/index.d.ts","../../../node_modules/@types/pouchdb-adapter-http/index.d.ts","../../../node_modules/@types/pouchdb-adapter-idb/index.d.ts","../../../node_modules/@types/pouchdb-adapter-websql/index.d.ts","../../../node_modules/@types/pouchdb-mapreduce/index.d.ts","../../../node_modules/@types/pouchdb-replication/index.d.ts","../../../node_modules/@types/pouchdb-browser/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/pretty-hrtime/index.d.ts","../../../node_modules/@types/q/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/redux/index.d.ts","../../../node_modules/@types/react-redux/index.d.ts","../../../node_modules/@types/react-syntax-highlighter/index.d.ts","../../../node_modules/@types/react-test-renderer/index.d.ts","../../../node_modules/@types/react-transition-group/Transition.d.ts","../../../node_modules/@types/react-transition-group/CSSTransition.d.ts","../../../node_modules/@types/react-transition-group/TransitionGroup.d.ts","../../../node_modules/@types/react-transition-group/SwitchTransition.d.ts","../../../node_modules/@types/react-transition-group/config.d.ts","../../../node_modules/@types/react-transition-group/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/shortid/index.d.ts","../../../node_modules/@types/source-list-map/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/source-map/source-map.d.ts","../../../node_modules/postcss/lib/postcss.d.ts","../../../node_modules/@types/stylelint/index.d.ts","../../../node_modules/@types/tapable/index.d.ts","../../../node_modules/@types/uglify-js/index.d.ts","../../../node_modules/anymatch/index.d.ts","../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../node_modules/@types/webpack-sources/lib/Source.d.ts","../../../node_modules/@types/webpack-sources/lib/CompatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ConcatSource.d.ts","../../../node_modules/@types/webpack-sources/lib/OriginalSource.d.ts","../../../node_modules/@types/webpack-sources/lib/PrefixSource.d.ts","../../../node_modules/@types/webpack-sources/lib/RawSource.d.ts","../../../node_modules/@types/webpack-sources/lib/ReplaceSource.d.ts","../../../node_modules/@types/webpack-sources/lib/SizeOnlySource.d.ts","../../../node_modules/@types/webpack-sources/lib/SourceMapSource.d.ts","../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../node_modules/@types/webpack-sources/lib/CachedSource.d.ts","../../../node_modules/@types/webpack-sources/index.d.ts","../../../node_modules/@types/webpack/index.d.ts","../../../node_modules/@types/webpack-env/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"38943ef508ccbc71691ff6c14f30e0468a85a4ec22c9e0a4eea2c9ba8ca19352","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9","63ea76eab54e08ce38ada84ddff0b080d6c2e360165071af684b43844b15bda7","98edf9bdfe6c7794349a88d720af3035fd4a68480895e72beaf8ff8e758a33f5","8a2395a5c1a95d05c205b791f012b120b4d02eb50a806e24d69da02c51de9d6f","123b33d472e095eef247713b75d8af051322947c9f82376094e2464f5b2c6c62","3cfca5c9292d8d84fb8f2002fbc638f1ce1116842fcf49da324c3ce428e5ba01","ae8664425db4d0412262eacb152add3880bb26a00b3351c60251836d1b0ff06d","198a7b1868feda59532c0b8c9787a40bc1a016bfeb4f34ac429c72f00d85f480","440c72c435268a4eb551c89fdb9d23b17b8b4313e59865ecff97a45194a4b760","36c864656ff1816fe6bc4bbd36a981ab880e31819010ab32e4c4375a9cd0ffa0","084fe2843779e36cc634a29427dfa6b4ad19bf3fc749a8ab71f8b1845dac8063","e2ed3c88156fb2986622e353fde67b7e215474fc99ad997b0e8f98e9820a2362","590930e5cc30f27e0faadede9dd85b1f36a87345c5502c55c8ad21fe0c4a4972","ead5a4d77393ab3c673b20f171eb4187ed04c17070f6938a52a304ecd9c9f1d9","7c829ae2e0612753dec828fdc84baad4f98a1e0fa60ab79fe101b1020103a26e",{"version":"a139b5f761e657cda95b3a6f938ce7102878b5b39edbb743894d39388d83cc7b","affectsGlobalScope":true},{"version":"513dfbfe04b52253f35007545694c2a99c313fdb6b836bdb8cbc9c7fb0ff6166","affectsGlobalScope":true},{"version":"a4832e26b82049fc2774c96ca6e1c17b2c204246570a62fdbe7e8ee8af2cd4d4","affectsGlobalScope":true},{"version":"6f1f78e8c2a5c7cd2c38aa9cc5da26d9c039f2bbfa753f2a0a54ce41c4dff8d0","affectsGlobalScope":true},"ec89427601297d439c961528832a75017d9356bec2ee42c1d16f2274590d9330","d0b93cf4a086095121a40a8a878f81c72783fc819ad055225a36ef829c6f41d4","50eac108cc307665c28801910626932956adcf8dc0dc70ab1939dd0e8aeb6f28","1a68643644167daaea17e2f89d04edd9d1fec7bf881e4fa3ad4cd43d92447ce1","7255a17d460541e2ccca5f485bb58b6fa64bc750047c5e57ce7abf17cc3f4f3d","571ffdcb677c42d897370ca1a616798670d7715361dc099f713f03c067e8c988","1f8d8388b2da5785ef9c169db1493969f8c9e1ea50e1db1194a21708403f2e10","a299dcd51a18896ffb9f1249507d387a996b8d733cd1ee7c0a5fb46b86f88524","2c3d2bc00ffd291568c89e1ea920cf5c41b6b6a532cdc0bcb74e917eaf133f3b","d164084ca52fc07a704d35264d524307e7e8ace196b817d4a86d0b93cf11ebd0","0de99ed9f5d0a953aabe8de8999b0ce24944f36374d36c06abf9dca6e5567368","a756f87e33897fd95428da3288ed3061182b8678e38b48000c53e5499c7f8863","f68abba533f1aee022d1800ab3ad273e163909b97c171c8eea15fa04e3d02280","9b526aac58282b2b9c1afd1969828336c77a81ca52916214ae63a70e256a8032","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"f544c98b782364169412ac2bc65143918f9f1dd49880920302693f2eb3bd3570","e5d5ee66044d79018aadeabf3dc39d758d9c45c49c004b3a57b76a974fb346d7","34ef06f1d5e0ae95afb816e93c40f04f93641c11ad06e54b6fbe9335c3238c03","1873db8f2261ba4f248bde3e5bb4c79b1fdc990315054e9604fce8f41ddd1587","7fde24f7b90ddb8aef7ab8f3e2c318babe0c606b7ea5a833369475b0129a05ee","366c22193ba68d3c1ea31d37d98dd5f133fc9e234f07c46656284422bb4209fa","ff60413f9896b702b4e653cf85f6f8246e11482ad4d6859997ca9edafed9cc46","b682e653b63b5aa118887e61cd81a78fc45d4ef8fe95d8c6449742919a5638a4","bbc1e78124f19ccf50225278b700436ce64cf92b0c6b1ca15567431a28371b31","1f93a4dd7096a18c6cf99085327b467de58f3cd7f0f941a8bdc1d7ec4284b301","a822e999d9c1814859735e919c2bd2a11f7d3c8633ab6656215dc386684e07bc","ae1b8ffb16f8dd0a4008ccf2534e6503af171a3c4ea17da590faeb0c41f85f3e","1cfe76cc39491c2f2059192c7486297154f0a517fe9b3bd9d223824a5f803573","acc42289b4e6d8d789b9f3a4c48fe601c23ab6fe747080f1dc99787b8e79d256","9de7ce840e4a5b95405a164d166d010eaa99fd631817ea3b0310ec4e22b98d0e","e2624cd48a969f5f8da7560fed327adddbcb3089897923f9f7d5a7cf04f4e917","21e1b303e758ec4a1e9f703e1e1be8c47c8dd74034c2369fd01e9bfe1da98acc","427a853968c89787bcdc5ba0e0603c6fdca97766e343ceaa5acef230883ba807","33cb56e3cc910266a13ca59281b907459131acc58739c2bd68dab246f8ed01fa","c6d0cb5ad7498c2c977a5340f17bcfcc151609118789bbace2336079f2d9f84a","383d4add4d2b7a9b03bb0b7b9b2f62b70c269e79616b629946b51283c14a92cf","4162810d701126188368ff58526c81e7c4c6a9a32ed26c4b763a5d3535b46748","513b7862a230ed479fb045bbe87d37f9ee91cc20fee15dd4b16c3cc74aa3e514","8ff77a6b5f0b74c681e132e9510f5576a29150ee53b1324efed33d3d7fabd736","7bdf81223f6cfae94a48484223d4b59b8ef609cf680f0fa90941d8e093ff27b0","9fbe4ad05e10d7957283cc4a3aa909e70717c62d51bdc19516ffd75a60c2eaf4","8b423ba6b1f81c80542db7deba332d1938db29f6f127fe169287903abe67fe8d","9c0a4431746ad0073026505df7a5724b4126c0e1f41b90e87c1efa6b8335711d","0ec7fb37f4303f3cac4f35819f0d5d75b3b4692990da2590c63c656729447dfe","ed6fbb1cb7cb8dc283f9d5efa68c17d5a9fc5e32fc481e2be7eccd5077d3afc0","e96e84cd79dac3fb1369911a8e9888308deda9542dcfb19d1540414e9ab64465","616ed304b4a011a969ba5d2aa5fca781d66b3f0c8f3d099e19c7158da36fa07b","163be962fa11ca0e3bc9afd1188701e16f5db0d84f904be3a5327c04bf14c1dc","f51c2abd01bb55990a6c5758c8ec34ea7802952c40c30c3941c75eea15539842","23255560340f60336ff79daf50b3b6432ec0f32f7dd19638d3a2406826a15d49","cbf272d1fef2ab8cca386524e1aa8e06caa3509eb6e724e0008ca613c05e7fdb","f8f0a01a9ec6571933c3b63b6d877d74729fbdab0be2fa87c18999b11357cf32","fca853da554cd762704a9bf8ad62cbf6d55d81c9d69b07b3c8a552367f4976d6","6b8d8f68865166b7f761ccdea7a66018f0452ddb7c6f75bf5cbaa31e6163af8f","d9cef8e439c407166963fa89b317d3ea7367e204035611447c9765786026f03b","ca888feddeab794c01fb1bec893ff46186801a30bca77c8a1aa28477f7e6f839","bb96345dfdd3b0695f5281537427e38fa85cb79449e3c6b59151bb7d753ef6f7","2561fd263d1d42554d0de99369f6fb352981090e2de0966b2e257891abf9977a","b01b764b8b1ce1376a70aa1bde2914093b36810a2a3e60cc9fd8f2741490a8f9","e6047a9c095d3b4a903aea90b49815be068476f1719e76766b7792ee21310f3a","cdcd29d866abedc194a88851871320fbb9c29e1c4868583b1f91ee2786acb818","c02107d9cae7a0c7541e8af0f4e0497650b1494e561e409e7cb90a12bc65ed09","5e62225c303695c8511d3831bca37c141931fd584e3aa1c8c5dd4b57cf01b1d0","1c3dd3b5d7eee485481470a75bd1829ee8e0388e87c8c8f8a8418f702592876a","53336c5924937a0a2a4ba1a515499f48092e4dd853386e77276c0a4ff8a1fa50","5a42225ecf779e7d42b44ff91cd7f842421835f28287e295e42622aa51aeeb6f","baab49106b672deb07dcd3e31333e4a2539970b5db9ee896aedbdba3ca2400e5","2af60becd168c31f931c6839f2cb126713bb0f556780b07959afd04b8311eade","826ea84343ee53323b8b67320019287543a15c1f25ad163552f4adfba79368da","7181cfa9a4f05524e825271e409017810c1bc6a4b9544e05be5bd59ee76ca691","ad9afc2c60e7303174e70e6cbfc1eca63d8a770855d5fa3ddaac8769b9d93658","7e6b3017bd81ce434b27ae46cee6bdc5850db0e0d75e6a1d45c6c23e17eb135b","9304c3176830887fd3bbb010a9542ce549397b63624a51c8e7f2be032adb76e9","6c9c7d76d7f525a366d5ebdb0b42bccfab0ec7bdc0bce4db5b97573ee0970d3e","c7322d04c36fbd32b9035e07416c30073fbadf0bb6c1e855425f12c1df645aee","198c3858acc28364fb1cdf1d99d140fd9e0f3732c57ccd40a1752bcf8f318a0b","0625a691c77d71dd48fc83a59bff500dfbf3bdc1fe9c079b64bcaf078b5158d4",{"version":"662564f7dc409b31c6ad48129d12a1320c132b45bcafd3a990d0f8f545ce0529","affectsGlobalScope":true},"49616c77d1f7669df57e8cc8afccd8454730bd5e3fa785edcfb3c0ba504cca3f","4e1cb04564eb20088c531c817c8f6c4db49620ef50376f35245642c67eb145ce","d3add4e7d6efaf837f6d0db385083d6b23a484c2c6079acbc8fa892c201487c7","8376014c53e41b0d5f96a78fdd2d8a8758640ad2f6ce292b5c66aebd6d088b46","03f3ca4f21862f79e971b5ca6b63805895cff6ccbd7ed31d2fd7327f19f5e028","f2b9951257d06d78828f43dc4047510ec21fe000f21cefd58684476db831ac5f","536fb1e2b80cceb77644b414e26ce29a8417f94a72f867f57e2e0c2db980a9ce","f0b0ef0ccfe0beeaa902aacd48798cc9a7f755546481cb149c4a57c7956c6d0a","2476381be38618f2937afa95c337739684aa174576a278139b7b08b6ab1f5341","c5d12b850beb2feb0369374909dc30fea794f25baaae8aa6f23ee533d80dfbac","ca8d29244d394cdc4cbfbddbbbe183bdcdb25daeb1814777bd1b988efc963bc5","e6d39558cb48d3ecf1e18dcfea09f5b891d97e0fc287dec68440088e88750930","0a5939cc81f0c470f3cae077943ab1a8f27bd0e0ef31fb6d9999c1099d5c1557","da1c29ce8da2803892f72c74fdb05992765ec7d5d9a6ef4dd82f3534e7d4773e","deb2c4a4f7e35965dde684402787eac08ca9143178a75b2c441d07fa7830fcbe","069d9515e3cb0d254928b11bf7da7e22afddf1d2a14f239421a128952069f898","c33ff15f5bb2ec9fe792288ee8a6e61a45210aad52007bc573d11e49a17542de","0cb0bb747f030197835fd42fab515388f3cd9745256f8b9badb0ed33477b4275","40d2b100e0cf82c6a297597f2f68f152ed9bd67533bbab359c5cc3d2d43a0e98","47c12b9b24e5bfd2879de2e2d1e921b2fd984e11c2086460ef3110408135641d","43eb52bf5a546b3f84e7da5b4eb1305f9ecfe9f5a3f41b85d620d1354a5f3646","63633f5796c4cf53210ce75f02e5d6e81b88012f5c8832af32c35d0a8b75cdde","520872f7c5dd8e4aa5eded9d68906f287f0e7e1b223caa2826120dafea9b8410","a2847912ac2cc3df01cec42991da81b7c5dcb1f89ec690b5412b15f831ea687e","3cb00f0b39f0dbc16cf727d2c38ec9913b64b666b256fbc683a5eadd9fc767b6","0a52641f1e38e5b7a7edb7eebbd6ad06e561db7c017f397323a263d74dd58e3f","2ceab74277f8e35d481a528c74e2c992429b2b75b8f0873fcd541cab9b210f0f","e442f58a3f157713f6fe0cb7fe25dfdf9b499cceed0e126eb112451c4bda9f74","7db9398e6aee094d1e21d9bea2205ae3e94f39effd58c868db972e8fdca3b382","93a239166429cef36a11b58831be7493a8b6083297819b864f64fe5a6c51769d","7202799c12b024a0ad8bb7d331a2abfa37000f7d4d4400eedaf0e8de86e9325d","3158f69a5641c10fa2014100c5e7f0884b6d4a0cce43d32af91009a5e8031674","752fa9ab4f022a094d6c036e556ab0cd65b8c599db46b0ab6ef20c5f541347c3","85accdf9e385b0b171b1e536f1ddfb7574b2ad059f28dc9fec681d13383cae29","5e5011ba7c0d3ecb7a96f7bbdbd0b0c5e030e06a8084b9cecc8d51813707fdd1","3305eb25f74ae5fe0ae670a2ef5f5cfe12a6b890d4ddd019e232248aafb69041","a345e40ec66caa5e999bcb4e39443b41024c7dd83dcae1b271dfb9f3baf42fe0","e7c43187ecd8e6fd5ac183d8fab70d262601b83ac8a350f77102e501b70c3399","d7a43c368e3a7eeae8570e6b731ea30797a436dfe413308d909ba64d7ee40d90","f22947fc62ea413bdb41dccd2dc03ad90c517bf1499988e7e4e06dc4cfe4d0e4","8cbb340cf3ddabe63ca08a8a8ee687cbd2e2240efc203829d88d6bfc5442af9f","30e9979007b862c3653edc1bcdd9c3b2daac943d86e5dc45ea4568ed5e717480","ecac33101e9b0de576ced13eed08c3203f13524956f92437a49291cc1aace4f9","ad8c9effc950e5a2051075b274c45876a76ffb88341994b278468e62a4bf39fc","78a9c7b35d8ea1a9e15bb1926726f4d19121b57bc3314ac6e7c659dbca213258","78294e1333be0e2a3c02f253721dacd0c205b12689f9a2992a6b9392c9e8b0f6","7fefa48fa54e87d74f1ebafe6934fb8be19b17ffa65a12d5dea921da09f5fc30","02e8c7670313db815cfc304c046b77fde0ad6d1de4c7f1527a12430ed2b73568","339fa6c313815d88228c93adc09832f4386c890844b6462cbbcde1cea0c47a82","230bc82cfb0df428eee75a194cbd1768a2dcd35ca39d669e771ae31380d5589e","584dc1976391a7579cb93466a54df2263ce0c7a4811897cb9777cbeef22a26c2","3b5f29d4e9827cdfef6b008bc5b00f1458fcb7218097fad40945d90322efa278","00566869cb63f7915307b242d07724f7c28eaa51724c36fcc1662d3b6f62a594","1f20b8737e2c06851c822b26f427fa97cbb687f26b873db7cc1321f8a7f5f787","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"414535152cbb6d2ef11c94953a793e18cb23c5329d439dacf66183adf87989fd","fbf3b885d9bab5d9061d4b1edc2ff4fd845ea1c28e5dcd34ac4a43d156161f46","fc9726976c91a37ec5f4c3fa91e46dedba08232d0b695460c348ed1bb0268d25","39eaa898927709414259421f4310d4a9bbb943b4dcb82c7a5cd75f0142c86273","5f34e74f9d889817c1388da54dbfdb28a36af5676c396fa3041309690bfa9ade","b0e23a13de5e00df2097f3bbc0ba67ecc18946f10222c2d4571814ba718467d7","2f89dab4002cafa419a8385e6cd54f3fd5458a024feb0f79e9967bf4c47157f7","e841f45cbf880c37dfc3279dd87523670ac8bf5477541a682ab10669ae6db0f0","4dfb0de036b79d6c4851ad323b7b8ba8d2eff92099edb928c28e2b8f151b4c73","b59fc967b467026aeb1dc3f3fc02c26b8b0b613212ade066d58cb1050b774da1","b10686e239ffd69ba14643969dd14c8be05f0fabeaff6490637efd034686474a","1f46fefd83929ee6cc2714d2e1689e6bd8e39dbfba337a59a4e124928fa6678c","af9541a8f9e0991338378be681fa333f9c84b0846579b4f5d9189e5266d7acf8","cc6194741830edfe6eda4f51dd4b8c2708a14ba1eafd8fc95cbb2f94f699d48b","0637ca78a74b77392effa72e38c2951cce0bb5f7019276f312f85f3d308eb5ef","2b0dc274f4e10794352b468f179cf8b5a9a0203406d8185717dc93a5d7ea9136","53c520b2ebbd7c565fb533caffe747807ae5adbff2f50178a011bad4c334160c","dc0b70f6d69942102028e513dd78c86c81f7fa684dda1468d84e2594cda70f07","5cd67ca764212482493f391633f38a03b52ba303cdd719eadc5be76d28d7daa5","80aef8308811864da7ed1e0eb0eca70497e9a2c953bbaf6db2f98faef2655f20","7044c407773c0900946b7a02f3a0e7e5e79af8b0a32b14aeb419b7beedfb3fcd","d8ce14c69633699d7c76f2ad94f78e882071f7863706f8e6e0ecc31800169e67","ab7d96fca46a5075458fcbca5ca3d7059059ef04e426f8032013d3c3a5351933","bf351d3e9fc47ddec96c6a219d0b6d96c43c18fc376934615d1702ff334ee7de","e24d10ccda341f500740a2d46822b279969d98664f92e0f1c30f6ef796254d9d","f80c6be079ec1df24ab5e64fc860248767f86421e05de7896a493742486f1ee0","b1eb670eee94eebc06e77d75b6c606491f84d01122b2e9edef4edeb9ea143318","0c9f55f247187045cc1432f0d81c94bcf56fb409acb163d408bfd5a1793447a5","c13e280d244dc0829d954089e1d0446455efdb72fb4bdc2e3f0561ffbc66c905","8dfed5c91ad36e69e6da6b7e49be929d4e19666db2b651aa839c485170a2902c","6da9e714516d081abaa435946d77c8d74dba888530412dc71601e83d2c8a512e","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","71c56bdaa82d7ce75a72d3c06c04fe10becec09bd9c4ef21776a2a055d3f428e",{"version":"24ff7ac33bdb941a8cd04408a31ba15fafab9684f751e7e88234813b89712c19","affectsGlobalScope":true},{"version":"3e432cdf56538889e5742d388cdf03d670bfb17f4547dbbb1daf90701ec790d5","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","55cb77e6ff3d95a68568446f53d3f1dc8fca753575d7c60471a865685f08dcc3","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"dda27180d5ff550ace8378f5df0f7a26e616f0c4e310c77e94329e2355f9c255","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","12a01de318341fefb7be11f22eb4bf28478a5f137b1b4546c509156e9c158198","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","5aa2a9a778a055cd668ea419ea80ba6e195210eb37d47707a1a58886aa4d80f0","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","9e6a556cf660a94faa51f5bce6ed009b9e02373546a4c67925da909f36c039d0","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"61dd09b57a0a5cf1486c3ceb3a18ad23babfe602c323035ce3d01544c5e3e0b6","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","352104835f5c468c7d8a277f2c8c02fac239a37cd2293181fe421faa153878d3","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","a4aa075328fe61190b8547e74fae18179591a67fedb2ad274c63044a00716743","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7",{"version":"42c1b00421aa4d5f03b85a2639c1573d32bd82533f34423bbf1f5fb2b0ddc4d8","affectsGlobalScope":true},"f0cb4b3ab88193e3e51e9e2622e4c375955003f1f81239d72c5b7a95415dad3e","92450d617e92f96354d281c8ed5613fd16cacea79eb60b1e9736494b3c057e69","8a9086357fe289efb682dc925358f30b6312c7219a5ca92212857a0a79612012","92bc42ed0e2d41559513fd457ee30d834c2f0fedb9ed5004c029cbf0ad2f8bd9","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","b1b1adc57093310531ddf3f78b21bda16c30f7319088b0981449476a6616cff3","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0133ebdd17a823ae56861948870cde4dac18dd8818ab641039c85bbb720429e0","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","e300bf65972ac08167a72787e19d1b43c285c5424707194d0ba64422f6b02c77","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","70b34c8420d6226ed565d55f47fe04912d0ca0ad128825c5a06e018a3498db32","de1d6e224048139baf7494237a9231be6bab9e990fb239c7825bfd38b06d8c90","de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","abc2748988e07e7e754b43cfcfadca4d45f3449eb4c0be503f13630a3f15f22b","6109487f86bc33b14eebb35cbc878b591328e19657d92bc6c61b667f7f9594c8","96b729b46007058fceb10567283275a023415f724af78e91cab3ac7073c19635","620a033e8ff8ffc3d280c3d78981d8a929d0a8c14574a3b87413d99d7f02fadd","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","e437d83044ba17246a861aa9691aa14223ff4a9d6f338ab1269c41c758586a88","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","062bd2910098fc059ba93e347649b3e126c555f7b144033d21d3f8ef63d3e39b","c9ad058b2cc9ce6dc2ed92960d6d009e8c04bef46d3f5312283debca6869f613","fda7ad096a1619fbae01b3d869cc82e29116f22be50133ac8fb08cee21279acd","9751247ee3bbcf1c63592f0f4dafb44559680b2b3e5736b7f0578c6a737d74c8","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26",{"version":"2d2482647045d334fcfce6eefa3340db2800cb2d0814e7b58d4f3b53c274d8ec","affectsGlobalScope":true},{"version":"f1e1d121f108eb57d576df44fc40e01448e0fc7fec64493b07aa852471b6a59d","affectsGlobalScope":true},{"version":"838524a3cc660f7bbb104ffa15febad659d1ef1633dac47340bfbfcbbbffdb08","affectsGlobalScope":true},{"version":"50a03e74fae4542ecfb326b34517ec2e058aee15bcb60af5b2e41c5e2db0d079","affectsGlobalScope":true},{"version":"d252bde46b7594f8f90a45d59181b08134ee8c4919ebb2ba7088ba26056bf621","affectsGlobalScope":true},{"version":"c892c9c7905dd7435264ca83ff0f3ac7f39a0937ee728acdce4b476ece7d6fd9","affectsGlobalScope":true},{"version":"1abdfe21f6b99b864965f9dc5073c49f0c0f3d5e8e1fe498fb94bd0a479d3afe","affectsGlobalScope":true},"4d737cdd77685ed65bd61d375375cae446fb0f46f711bbb3ef3f81a350212569","65455ea1b00bae7bd26d3c8c2401eb3d10401c09c55192d6f3b8b2275eda20c2","c0a3ea3aee13c4946a6aefce3a6ab9292a40a29f6622cde0fda0b1067a1a1f5f","62b931417104c7cb35d0725e1869f51d52d7b18462fd58f32f846a314a42ba10","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51",{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},"4370c91e46f6992a89e3979c50434cf932088e1b5ae6e3a5214d778634dea768",{"version":"cffd3848b7af4922d70028c805b7df5e8f0eac4a8d2410b0f55b47ca62c6c3a8","affectsGlobalScope":true},"ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","ed3b711f533ddb3a5451f4c4bb0df3a0b95e9d0433b3b7834644dd1718d06d31","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","30783d97bd0231ae2c4b9320043d61442a8177e81c7df826a5536b95fdd63280","67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","aec0cabbdfacf43db998d8e50ee6f1e72131d24b5018dfb84f14806717baa0a6","e32dad799d088c53cbe1da736e34cad03027d56dd2fc77d484a67100278bc4bd","3833c70307dc3d2b46cb6f2a8b6a90e4d7e7367a21ab18c481d7de0909a43e67","9d74c7330800b325bb19cc8c1a153a612c080a60094e1ab6cfb6e39cf1b88c36","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","05d64cc1118031b29786632a9a0f6d7cf1dcacb303f27023a466cf3cdc860538","e0fff9119e1a5d2fdd46345734126cd6cb99c2d98a9debf0257047fe3937cc3f","d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","e275297155ec3251200abbb334c7f5641fecc68b2a9573e40eed50dff7584762","b2f006ee835f315d01c43c0f5d9e9ad78a5870b380899877b32a33078d065dbd",{"version":"3a1e422f919c70fca66e94dc641ad8d9732b3d2533ac047b8a9aaca9eea3aa10","affectsGlobalScope":true},"f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","09c4b2e2d3070239d563fc690f0cc5db04a2d9b66a23e61aef8b5274e3e9910c"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"target":4},"fileIdsList":[[250],[53],[250,251,252,253,254],[250,252],[71,95],[302],[304],[305,306],[305],[308],[310],[50,303],[312,313,314,315],[316],[268,269,302,317],[269,302],[320],[50],[325],[326],[88,90],[66,67,68,69,70],[221],[209,211,212,213,214,215,216,217,218,219,220,221],[209,210,212,213,214,215,216,217,218,219,220,221],[210,211,212,213,214,215,216,217,218,219,220,221],[209,210,211,213,214,215,216,217,218,219,220,221],[209,210,211,212,214,215,216,217,218,219,220,221],[209,210,211,212,213,215,216,217,218,219,220,221],[209,210,211,212,213,214,216,217,218,219,220,221],[209,210,211,212,213,214,215,217,218,219,220,221],[209,210,211,212,213,214,215,216,218,219,220,221],[209,210,211,212,213,214,215,216,217,219,220,221],[209,210,211,212,213,214,215,216,217,218,220,221],[209,210,211,212,213,214,215,216,217,218,219,221],[209,210,211,212,213,214,215,216,217,218,219,220],[271,291,302,335,336],[271,285,302],[299,300],[268,269,276,285],[260,268,276],[292],[264,269,277],[285],[266,268,276],[268],[268,270,285,291],[269],[276,285,291],[268,269,271,276,285,288,291],[271,288,291],[301],[291],[266,268,285],[258],[290],[283,292,294],[276],[257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298],[282],[268,270,285,291,294],[344],[344,345,346,347,348,349],[309,343],[343,344],[50,322,356],[50,358],[50,360],[360,361,362,363,364],[46,47,48,49],[372],[371],[302,378,379,380,381,382,383,384,385,386,387,388],[377,378,387],[378,387],[369,377,378,387],[378],[264,377,387],[377,378,379,380,381,382,383,384,385,386,388],[264,302,371,374,375,376,389],[392],[84,85],[84,85,86,87],[89],[48,50,51,52,54,225,232,233,234,235,240],[51],[51,238,240,243],[51,238],[51,225,232,238,239],[51,94,232,235,238,240,242],[51,235,239,240],[51,235,240,241,243,244,245],[51,233],[50,51],[48,50,94,95,98],[48,50],[50,102],[48,50,94,95,98,119],[50,54,95],[50,119],[50,93,94,124,127],[50,54],[50,93,94,125,126],[50,94],[50,103],[50,54,110],[50,111],[50,93,111],[50,111,114],[111,112,113,115],[71,93,98,99,100,101,103,104,105,106,110,116,117,118,119,120,121,122,123,127,128,129,130,131,132,133,136,137,142,143,144,145,146,147,148,149,150,151,152,153],[50,95,98,111,134],[135],[50,138],[138,139,140,141],[48,50,95],[50,96],[96,97],[107],[107,108,109],[48,50,156,161,162,174,175,177,178],[176],[94],[180],[179],[177],[94,184],[186],[156,161,162,174,175,177,178,179,180,181,182,183,184,185,187],[156,179],[157,158,159,160],[162,179],[162],[165],[163,164,166,167,168,169,170,171,172,173],[63],[48,50,53,93,94,154,188,189,198,223],[64,188],[64],[188],[154],[64,93,94,188,189],[93,196],[194,195],[56],[56,57,58,59,60,61,62],[55,64,65,155,189,190,191,192,193,197,224],[48,50,189],[48,50,94,189],[48,50,188,189],[48,50,64],[48,50,94,189,221],[50,200],[199],[50,199],[200,201,202,203,204,205,206,207,208,222],[48],[236,237],[226],[227],[229],[226,228,229,230,231],[76],[91],[72,73,74,75,76,77,78,79,80,81,82,83,92]],"referencedMap":[[252,1],[102,2],[255,3],[251,1],[253,4],[254,1],[256,5],[303,6],[305,7],[307,8],[306,9],[309,10],[311,11],[310,12],[316,13],[313,14],[318,15],[319,16],[321,17],[322,18],[326,19],[327,20],[91,21],[71,22],[329,6],[330,23],[242,23],[331,23],[332,23],[210,24],[211,25],[209,26],[212,27],[213,28],[214,29],[215,30],[216,31],[217,32],[218,33],[219,34],[220,35],[221,36],[333,17],[337,37],[335,38],[301,39],[260,40],[261,41],[262,42],[263,43],[264,44],[265,45],[267,46],[268,46],[269,47],[270,48],[271,49],[272,50],[273,51],[302,52],[274,46],[275,53],[276,54],[279,55],[280,56],[283,46],[284,57],[285,46],[288,58],[299,59],[290,58],[291,60],[293,44],[295,61],[296,44],[339,46],[345,62],[346,62],[347,62],[350,63],[344,64],[343,62],[348,62],[349,65],[124,18],[355,18],[357,66],[358,67],[359,18],[361,68],[363,18],[360,18],[362,68],[365,69],[126,18],[125,18],[50,70],[51,18],[366,6],[373,71],[375,72],[389,73],[388,74],[379,75],[380,76],[381,76],[382,75],[383,75],[384,75],[385,77],[378,78],[386,74],[387,79],[390,80],[393,81],[86,82],[88,83],[87,82],[372,72],[90,84],[241,85],[235,86],[244,87],[247,88],[239,86],[240,89],[243,90],[245,91],[246,92],[234,93],[233,86],[248,94],[249,86],[99,95],[100,96],[101,18],[103,97],[104,96],[105,18],[106,18],[118,18],[117,96],[120,98],[121,99],[122,100],[123,18],[128,101],[130,102],[127,103],[131,18],[132,18],[133,18],[137,18],[143,18],[144,18],[145,18],[119,18],[146,18],[147,104],[148,18],[150,18],[151,18],[152,105],[153,18],[111,106],[112,107],[114,108],[113,107],[115,109],[116,110],[154,111],[135,112],[134,107],[136,113],[139,114],[138,97],[140,18],[141,18],[142,115],[96,116],[97,117],[98,118],[108,119],[107,18],[109,119],[110,120],[179,121],[177,122],[178,123],[181,124],[183,124],[156,125],[184,126],[185,127],[187,128],[188,129],[159,130],[160,130],[157,130],[158,130],[161,131],[173,132],[164,133],[166,134],[167,133],[168,133],[169,134],[170,133],[171,133],[163,133],[165,133],[172,133],[174,135],[54,2],[64,136],[224,137],[189,138],[191,139],[198,140],[155,141],[190,142],[197,143],[196,144],[57,145],[58,145],[59,145],[60,145],[61,145],[62,145],[63,146],[225,147],[203,148],[204,148],[206,149],[207,150],[208,151],[222,152],[201,153],[202,154],[200,155],[223,156],[237,157],[238,158],[227,159],[228,160],[230,161],[232,162],[77,163],[92,164],[93,165]],"exportedModulesMap":[[252,1],[102,2],[255,3],[251,1],[253,4],[254,1],[256,5],[303,6],[305,7],[307,8],[306,9],[309,10],[311,11],[310,12],[316,13],[313,14],[318,15],[319,16],[321,17],[322,18],[326,19],[327,20],[91,21],[71,22],[329,6],[330,23],[242,23],[331,23],[332,23],[210,24],[211,25],[209,26],[212,27],[213,28],[214,29],[215,30],[216,31],[217,32],[218,33],[219,34],[220,35],[221,36],[333,17],[337,37],[335,38],[301,39],[260,40],[261,41],[262,42],[263,43],[264,44],[265,45],[267,46],[268,46],[269,47],[270,48],[271,49],[272,50],[273,51],[302,52],[274,46],[275,53],[276,54],[279,55],[280,56],[283,46],[284,57],[285,46],[288,58],[299,59],[290,58],[291,60],[293,44],[295,61],[296,44],[339,46],[345,62],[346,62],[347,62],[350,63],[344,64],[343,62],[348,62],[349,65],[124,18],[355,18],[357,66],[358,67],[359,18],[361,68],[363,18],[360,18],[362,68],[365,69],[126,18],[125,18],[50,70],[51,18],[366,6],[373,71],[375,72],[389,73],[388,74],[379,75],[380,76],[381,76],[382,75],[383,75],[384,75],[385,77],[378,78],[386,74],[387,79],[390,80],[393,81],[86,82],[88,83],[87,82],[372,72],[90,84],[241,85],[235,86],[244,87],[247,88],[239,86],[240,89],[243,90],[245,91],[246,92],[234,93],[233,86],[248,94],[249,86],[99,95],[100,96],[101,18],[103,97],[104,96],[105,18],[106,18],[118,18],[117,96],[120,98],[121,99],[122,100],[123,18],[128,101],[130,102],[127,103],[131,18],[132,18],[133,18],[137,18],[143,18],[144,18],[145,18],[119,18],[146,18],[147,104],[148,18],[150,18],[151,18],[152,105],[153,18],[111,106],[112,107],[114,108],[113,107],[115,109],[116,110],[154,111],[135,112],[134,107],[136,113],[139,114],[138,97],[140,18],[141,18],[142,115],[96,116],[97,117],[98,118],[108,119],[107,18],[109,119],[110,120],[179,121],[177,122],[178,123],[181,124],[183,124],[156,125],[184,126],[185,127],[187,128],[188,129],[159,130],[160,130],[157,130],[158,130],[161,131],[173,132],[164,133],[166,134],[167,133],[168,133],[169,134],[170,133],[171,133],[163,133],[165,133],[172,133],[174,135],[54,2],[64,136],[224,137],[189,138],[191,139],[198,140],[155,141],[190,142],[197,143],[196,144],[57,145],[58,145],[59,145],[60,145],[61,145],[62,145],[63,146],[225,147],[203,148],[204,148],[206,149],[207,150],[208,151],[222,152],[201,153],[202,154],[200,155],[223,156],[237,157],[238,158],[227,159],[228,160],[230,161],[232,162],[77,163],[92,164],[93,165]],"semanticDiagnosticsPerFile":[252,250,53,102,255,251,253,254,256,303,305,307,306,304,309,311,310,312,316,313,315,318,319,321,322,323,324,325,326,327,91,67,66,71,69,68,314,328,329,330,242,331,332,210,211,209,212,213,214,215,216,217,218,219,220,221,333,94,317,334,308,336,337,335,300,258,301,259,260,261,262,263,264,265,266,267,268,269,270,257,297,271,272,273,302,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,299,290,291,292,293,294,298,295,296,338,339,340,341,342,345,346,347,350,344,343,348,349,351,352,48,353,354,124,355,357,358,359,361,363,360,362,364,365,126,125,46,50,51,366,367,49,368,70,369,370,373,374,375,320,391,389,388,379,380,381,382,383,384,385,378,386,387,377,390,392,393,376,47,176,84,86,88,87,85,52,95,372,90,89,356,371,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,42,43,44,1,9,45,241,235,244,247,239,240,243,245,246,234,233,248,249,99,100,101,103,104,105,106,118,117,120,121,122,123,129,128,130,127,131,132,133,137,143,144,145,119,146,147,148,149,150,151,152,153,111,112,114,113,115,116,154,135,134,136,139,138,140,141,142,96,97,98,108,107,109,110,179,175,177,162,180,178,181,182,183,156,184,185,186,187,188,159,160,157,158,161,173,164,166,167,168,169,170,171,163,165,172,174,54,55,64,65,224,189,191,198,155,190,192,193,197,194,195,196,57,58,59,60,61,62,56,63,225,203,204,205,206,207,208,222,201,199,202,200,223,237,236,238,227,228,230,229,226,231,232,72,73,75,74,82,77,76,78,92,79,81,80,83,93]},"version":"4.3.2"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/chart",
3
- "version": "0.6.1-fixed-deps.2+1d874ed",
3
+ "version": "0.6.1-markdownnotebooks.7+cb9c205",
4
4
  "description": "Deephaven Chart",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -34,9 +34,9 @@
34
34
  "start": "cross-env NODE_ENV=development npm run watch"
35
35
  },
36
36
  "dependencies": {
37
- "@deephaven/icons": "^0.6.1-fixed-deps.2+1d874ed",
38
- "@deephaven/iris-grid": "^0.6.1-fixed-deps.2+1d874ed",
39
- "@deephaven/jsapi-shim": "^0.6.1-fixed-deps.2+1d874ed",
37
+ "@deephaven/icons": "^0.6.1-markdownnotebooks.7+cb9c205",
38
+ "@deephaven/iris-grid": "^0.6.1-markdownnotebooks.7+cb9c205",
39
+ "@deephaven/jsapi-shim": "^0.6.1-markdownnotebooks.7+cb9c205",
40
40
  "deep-equal": "^2.0.4",
41
41
  "lodash.debounce": "^4.0.8",
42
42
  "memoize-one": "^5.1.1",
@@ -51,9 +51,9 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@babel/cli": "^7.14.8",
54
- "@deephaven/log": "^0.6.1-fixed-deps.2+1d874ed",
55
- "@deephaven/mocks": "^0.6.1-fixed-deps.2+1d874ed",
56
- "@deephaven/tsconfig": "^0.6.1-fixed-deps.2+1d874ed",
54
+ "@deephaven/log": "^0.6.1-markdownnotebooks.7+cb9c205",
55
+ "@deephaven/mocks": "^0.6.1-markdownnotebooks.7+cb9c205",
56
+ "@deephaven/tsconfig": "^0.6.1-markdownnotebooks.7+cb9c205",
57
57
  "@types/react": "^16.14.8",
58
58
  "@types/react-dom": "^16.9.13",
59
59
  "cross-env": "^7.0.2",
@@ -73,5 +73,5 @@
73
73
  "publishConfig": {
74
74
  "access": "public"
75
75
  },
76
- "gitHead": "1d874ede742636976f1479910a0238f8f9abbebf"
76
+ "gitHead": "cb9c205657106139bea9a0d2159681b82126adda"
77
77
  }