Hacked By AnonymousFox

Current Path : C:/AppServ/www/financial/stacked/code/es5/modules/
Upload File :
Current File : C:/AppServ/www/financial/stacked/code/es5/modules/data-tools.js.map

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/data-tools\n * @requires highcharts\n *\n * Highcharts\n *\n * (c) 2010-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/data-tools\", [[\"highcharts/highcharts\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/data-tools\"] = factory(require(\"highcharts\"));\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 944:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ data_tools_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n;// ./code/es5/es-modules/Data/Modifiers/DataModifier.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Gøran Slettemark\n *\n * */\n\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Abstract class to provide an interface for modifying a table.\n *\n */\nvar DataModifier = /** @class */ (function () {\n    function DataModifier() {\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Runs a timed execution of the modifier on the given datatable.\n     * Can be configured to run multiple times.\n     *\n     * @param {DataTable} dataTable\n     * The datatable to execute\n     *\n     * @param {DataModifier.BenchmarkOptions} options\n     * Options. Currently supports `iterations` for number of iterations.\n     *\n     * @return {Array<number>}\n     * An array of times in milliseconds\n     *\n     */\n    DataModifier.prototype.benchmark = function (dataTable, options) {\n        var results = [];\n        var modifier = this;\n        var execute = function () {\n                modifier.modifyTable(dataTable);\n            modifier.emit({\n                type: 'afterBenchmarkIteration'\n            });\n        };\n        var defaultOptions = {\n                iterations: 1\n            };\n        var iterations = merge(defaultOptions,\n            options).iterations;\n        modifier.on('afterBenchmarkIteration', function () {\n            if (results.length === iterations) {\n                modifier.emit({\n                    type: 'afterBenchmark',\n                    results: results\n                });\n                return;\n            }\n            // Run again\n            execute();\n        });\n        var times = {\n                startTime: 0,\n                endTime: 0\n            };\n        // Add timers\n        modifier.on('modify', function () {\n            times.startTime = window.performance.now();\n        });\n        modifier.on('afterModify', function () {\n            times.endTime = window.performance.now();\n            results.push(times.endTime - times.startTime);\n        });\n        // Initial run\n        execute();\n        return results;\n    };\n    /**\n     * Emits an event on the modifier to all registered callbacks of this event.\n     *\n     * @param {DataModifier.Event} [e]\n     * Event object containing additonal event information.\n     */\n    DataModifier.prototype.emit = function (e) {\n        fireEvent(this, e.type, e);\n    };\n    /**\n     * Returns a modified copy of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Table to modify.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Promise<Highcharts.DataTable>}\n     * Table with `modified` property as a reference.\n     */\n    DataModifier.prototype.modify = function (table, eventDetail) {\n        var modifier = this;\n        return new Promise(function (resolve, reject) {\n            if (table.modified === table) {\n                table.modified = table.clone(false, eventDetail);\n            }\n            try {\n                resolve(modifier.modifyTable(table, eventDetail));\n            }\n            catch (e) {\n                modifier.emit({\n                    type: 'error',\n                    detail: eventDetail,\n                    table: table\n                });\n                reject(e);\n            }\n        });\n    };\n    /**\n     * Applies partial modifications of a cell change to the property `modified`\n     * of the given modified table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {string} columnName\n     * Column name of changed cell.\n     *\n     * @param {number|undefined} rowIndex\n     * Row index of changed cell.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Changed cell value.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    DataModifier.prototype.modifyCell = function (table, \n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    columnName, rowIndex, cellValue, eventDetail\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    ) {\n        return this.modifyTable(table);\n    };\n    /**\n     * Applies partial modifications of column changes to the property\n     * `modified` of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Changed columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex=0]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    DataModifier.prototype.modifyColumns = function (table, \n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    columns, rowIndex, eventDetail\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    ) {\n        return this.modifyTable(table);\n    };\n    /**\n     * Applies partial modifications of row changes to the property `modified`\n     * of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Array<(Highcharts.DataTableRow|Highcharts.DataTableRowObject)>} rows\n     * Changed rows.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    DataModifier.prototype.modifyRows = function (table, \n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    rows, rowIndex, eventDetail\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    ) {\n        return this.modifyTable(table);\n    };\n    /**\n     * Registers a callback for a specific modifier event.\n     *\n     * @param {string} type\n     * Event type as a string.\n     *\n     * @param {DataEventEmitter.Callback} callback\n     * Function to register for an modifier callback.\n     *\n     * @return {Function}\n     * Function to unregister callback from the modifier event.\n     */\n    DataModifier.prototype.on = function (type, callback) {\n        return addEvent(this, type, callback);\n    };\n    return DataModifier;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n/**\n * Additionally provided types for modifier events and options.\n */\n(function (DataModifier) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    /**\n     * Registry as a record object with modifier names and their class\n     * constructor.\n     */\n    DataModifier.types = {};\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Adds a modifier class to the registry. The modifier class has to provide\n     * the `DataModifier.options` property and the `DataModifier.modifyTable`\n     * method to modify the table.\n     *\n     * @private\n     *\n     * @param {string} key\n     * Registry key of the modifier class.\n     *\n     * @param {DataModifierType} DataModifierClass\n     * Modifier class (aka class constructor) to register.\n     *\n     * @return {boolean}\n     * Returns true, if the registration was successful. False is returned, if\n     * their is already a modifier registered with this key.\n     */\n    function registerType(key, DataModifierClass) {\n        return (!!key &&\n            !DataModifier.types[key] &&\n            !!(DataModifier.types[key] = DataModifierClass));\n    }\n    DataModifier.registerType = registerType;\n})(DataModifier || (DataModifier = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Modifiers_DataModifier = (DataModifier);\n\n;// ./code/es5/es-modules/Data/DataTableCore.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Gøran Slettemark\n *  - Torstein Hønsi\n *\n * */\n\n\nvar DataTableCore_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Class to manage columns and rows in a table structure. It provides methods\n * to add, remove, and manipulate columns and rows, as well as to retrieve data\n * from specific cells.\n *\n * @class\n * @name Highcharts.DataTable\n *\n * @param {Highcharts.DataTableOptions} [options]\n * Options to initialize the new DataTable instance.\n */\nvar DataTableCore = /** @class */ (function () {\n    /**\n     * Constructs an instance of the DataTable class.\n     *\n     * @example\n     * const dataTable = new Highcharts.DataTableCore({\n     *   columns: {\n     *     year: [2020, 2021, 2022, 2023],\n     *     cost: [11, 13, 12, 14],\n     *     revenue: [12, 15, 14, 18]\n     *   }\n     * });\n\n     *\n     * @param {Highcharts.DataTableOptions} [options]\n     * Options to initialize the new DataTable instance.\n     */\n    function DataTableCore(options) {\n        if (options === void 0) { options = {}; }\n        var _this = this;\n        /**\n         * Whether the ID was automatic generated or given in the constructor.\n         *\n         * @name Highcharts.DataTable#autoId\n         * @type {boolean}\n         */\n        this.autoId = !options.id;\n        this.columns = {};\n        /**\n         * ID of the table for indentification purposes.\n         *\n         * @name Highcharts.DataTable#id\n         * @type {string}\n         */\n        this.id = (options.id || uniqueKey());\n        this.modified = this;\n        this.rowCount = 0;\n        this.versionTag = uniqueKey();\n        var rowCount = 0;\n        objectEach(options.columns || {}, function (column, columnName) {\n            _this.columns[columnName] = column.slice();\n            rowCount = Math.max(rowCount, column.length);\n        });\n        this.applyRowCount(rowCount);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Applies a row count to the table by setting the `rowCount` property and\n     * adjusting the length of all columns.\n     *\n     * @private\n     * @param {number} rowCount The new row count.\n     */\n    DataTableCore.prototype.applyRowCount = function (rowCount) {\n        this.rowCount = rowCount;\n        objectEach(this.columns, function (column) {\n            if (isArray(column)) { // Not on typed array\n                column.length = rowCount;\n            }\n        });\n    };\n    /**\n     * Fetches the given column by the canonical column name. Simplified version\n     * of the full `DataTable.getRow` method, always returning by reference.\n     *\n     * @param {string} columnName\n     * Name of the column to get.\n     *\n     * @return {Highcharts.DataTableColumn|undefined}\n     * A copy of the column, or `undefined` if not found.\n     */\n    DataTableCore.prototype.getColumn = function (columnName, \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    asReference) {\n        return this.columns[columnName];\n    };\n    /**\n     * Retrieves all or the given columns. Simplified version of the full\n     * `DataTable.getColumns` method, always returning by reference.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names to retrieve.\n     *\n     * @return {Highcharts.DataTableColumnCollection}\n     * Collection of columns. If a requested column was not found, it is\n     * `undefined`.\n     */\n    DataTableCore.prototype.getColumns = function (columnNames, \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    asReference) {\n        var _this = this;\n        return (columnNames || Object.keys(this.columns)).reduce(function (columns, columnName) {\n            columns[columnName] = _this.columns[columnName];\n            return columns;\n        }, {});\n    };\n    /**\n     * Retrieves the row at a given index.\n     *\n     * @param {number} rowIndex\n     * Row index to retrieve. First row has index 0.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names to retrieve.\n     *\n     * @return {Record<string, number|string|undefined>|undefined}\n     * Returns the row values, or `undefined` if not found.\n     */\n    DataTableCore.prototype.getRow = function (rowIndex, columnNames) {\n        var _this = this;\n        return (columnNames || Object.keys(this.columns)).map(function (key) { var _a; return (_a = _this.columns[key]) === null || _a === void 0 ? void 0 : _a[rowIndex]; });\n    };\n    /**\n     * Sets cell values for a column. Will insert a new column, if not found.\n     *\n     * @param {string} columnName\n     * Column name to set.\n     *\n     * @param {Highcharts.DataTableColumn} [column]\n     * Values to set in the column.\n     *\n     * @param {number} [rowIndex=0]\n     * Index of the first row to change. (Default: 0)\n     *\n     * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setColumns\n     * @emits #afterSetColumns\n     */\n    DataTableCore.prototype.setColumn = function (columnName, column, rowIndex, eventDetail) {\n        var _a;\n        if (column === void 0) { column = []; }\n        if (rowIndex === void 0) { rowIndex = 0; }\n        this.setColumns((_a = {}, _a[columnName] = column, _a), rowIndex, eventDetail);\n    };\n    /**\n     * * Sets cell values for multiple columns. Will insert new columns, if not\n     * found. Simplified version of the full `DataTable.setColumns`, limited to\n     * full replacement of the columns (undefined `rowIndex`).\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first row to change. Keep undefined to reset.\n     *\n     * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setColumns\n     * @emits #afterSetColumns\n     */\n    DataTableCore.prototype.setColumns = function (columns, rowIndex, eventDetail) {\n        var _this = this;\n        var rowCount = this.rowCount;\n        objectEach(columns, function (column, columnName) {\n            _this.columns[columnName] = column.slice();\n            rowCount = column.length;\n        });\n        this.applyRowCount(rowCount);\n        if (!(eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.silent)) {\n            DataTableCore_fireEvent(this, 'afterSetColumns');\n            this.versionTag = uniqueKey();\n        }\n    };\n    /**\n     * Sets cell values of a row. Will insert a new row if no index was\n     * provided, or if the index is higher than the total number of table rows.\n     * A simplified version of the full `DateTable.setRow`, limited to objects.\n     *\n     * @param {Record<string, number|string|undefined>} row\n     * Cell values to set.\n     *\n     * @param {number} [rowIndex]\n     * Index of the row to set. Leave `undefind` to add as a new row.\n     *\n     * @param {boolean} [insert]\n     * Whether to insert the row at the given index, or to overwrite the row.\n     *\n     * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #afterSetRows\n     */\n    DataTableCore.prototype.setRow = function (row, rowIndex, insert, eventDetail) {\n        if (rowIndex === void 0) { rowIndex = this.rowCount; }\n        var columns = this.columns,\n            indexRowCount = insert ? this.rowCount + 1 : rowIndex + 1;\n        objectEach(row, function (cellValue, columnName) {\n            var column = columns[columnName] ||\n                    (eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.addColumns) !== false && new Array(indexRowCount);\n            if (column) {\n                if (insert) {\n                    column.splice(rowIndex, 0, cellValue);\n                }\n                else {\n                    column[rowIndex] = cellValue;\n                }\n                columns[columnName] = column;\n            }\n        });\n        if (indexRowCount > this.rowCount) {\n            this.applyRowCount(indexRowCount);\n        }\n        if (!(eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.silent)) {\n            DataTableCore_fireEvent(this, 'afterSetRows');\n            this.versionTag = uniqueKey();\n        }\n    };\n    return DataTableCore;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Data_DataTableCore = (DataTableCore);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * A column of values in a data table.\n * @typedef {Array<boolean|null|number|string|undefined>} Highcharts.DataTableColumn\n */ /**\n* A collection of data table columns defined by a object where the key is the\n* column name and the value is an array of the column values.\n* @typedef {Record<string, Highcharts.DataTableColumn>} Highcharts.DataTableColumnCollection\n*/\n/**\n * Options for the `DataTable` or `DataTableCore` classes.\n * @interface Highcharts.DataTableOptions\n */ /**\n* The column options for the data table. The columns are defined by an object\n* where the key is the column ID and the value is an array of the column\n* values.\n*\n* @name Highcharts.DataTableOptions.columns\n* @type {Highcharts.DataTableColumnCollection|undefined}\n*/ /**\n* Custom ID to identify the new DataTable instance.\n*\n* @name Highcharts.DataTableOptions.id\n* @type {string|undefined}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Data/DataTable.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Gøran Slettemark\n *  - Jomar Hønsi\n *  - Dawid Dragula\n *\n * */\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar DataTable_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, DataTable_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, DataTable_uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Class to manage columns and rows in a table structure. It provides methods\n * to add, remove, and manipulate columns and rows, as well as to retrieve data\n * from specific cells.\n *\n * @class\n * @name Highcharts.DataTable\n *\n * @param {Highcharts.DataTableOptions} [options]\n * Options to initialize the new DataTable instance.\n */\nvar DataTable = /** @class */ (function (_super) {\n    __extends(DataTable, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function DataTable(options) {\n        if (options === void 0) { options = {}; }\n        var _this = _super.call(this,\n            options) || this;\n        _this.modified = _this;\n        return _this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * Tests whether a row contains only `null` values or is equal to\n     * DataTable.NULL. If all columns have `null` values, the function returns\n     * `true`. Otherwise, it returns `false` to indicate that the row contains\n     * at least one non-null value.\n     *\n     * @function Highcharts.DataTable.isNull\n     *\n     * @param {Highcharts.DataTableRow|Highcharts.DataTableRowObject} row\n     * Row to test.\n     *\n     * @return {boolean}\n     * Returns `true`, if the row contains only null, otherwise `false`.\n     *\n     * @example\n     * if (DataTable.isNull(row)) {\n     *   // handle null row\n     * }\n     */\n    DataTable.isNull = function (row) {\n        if (row === DataTable.NULL) {\n            return true;\n        }\n        if (row instanceof Array) {\n            if (!row.length) {\n                return false;\n            }\n            for (var i = 0, iEnd = row.length; i < iEnd; ++i) {\n                if (row[i] !== null) {\n                    return false;\n                }\n            }\n        }\n        else {\n            var columnNames = Object.keys(row);\n            if (!columnNames.length) {\n                return false;\n            }\n            for (var i = 0, iEnd = columnNames.length; i < iEnd; ++i) {\n                if (row[columnNames[i]] !== null) {\n                    return false;\n                }\n            }\n        }\n        return true;\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Returns a clone of this table. The cloned table is completely independent\n     * of the original, and any changes made to the clone will not affect\n     * the original table.\n     *\n     * @function Highcharts.DataTable#clone\n     *\n     * @param {boolean} [skipColumns]\n     * Whether to clone columns or not.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Clone of this data table.\n     *\n     * @emits #cloneTable\n     * @emits #afterCloneTable\n     */\n    DataTable.prototype.clone = function (skipColumns, eventDetail) {\n        var table = this,\n            tableOptions = {};\n        table.emit({ type: 'cloneTable', detail: eventDetail });\n        if (!skipColumns) {\n            tableOptions.columns = table.columns;\n        }\n        if (!table.autoId) {\n            tableOptions.id = table.id;\n        }\n        var tableClone = new DataTable(tableOptions);\n        if (!skipColumns) {\n            tableClone.versionTag = table.versionTag;\n            tableClone.originalRowIndexes = table.originalRowIndexes;\n            tableClone.localRowIndexes = table.localRowIndexes;\n        }\n        table.emit({\n            type: 'afterCloneTable',\n            detail: eventDetail,\n            tableClone: tableClone\n        });\n        return tableClone;\n    };\n    /**\n     * Deletes columns from the table.\n     *\n     * @function Highcharts.DataTable#deleteColumns\n     *\n     * @param {Array<string>} [columnNames]\n     * Names of columns to delete. If no array is provided, all\n     * columns will be deleted.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTableColumnCollection|undefined}\n     * Returns the deleted columns, if found.\n     *\n     * @emits #deleteColumns\n     * @emits #afterDeleteColumns\n     */\n    DataTable.prototype.deleteColumns = function (columnNames, eventDetail) {\n        var table = this,\n            columns = table.columns,\n            deletedColumns = {},\n            modifiedColumns = {},\n            modifier = table.modifier,\n            rowCount = table.rowCount;\n        columnNames = (columnNames || Object.keys(columns));\n        if (columnNames.length) {\n            table.emit({\n                type: 'deleteColumns',\n                columnNames: columnNames,\n                detail: eventDetail\n            });\n            for (var i = 0, iEnd = columnNames.length, column = void 0, columnName = void 0; i < iEnd; ++i) {\n                columnName = columnNames[i];\n                column = columns[columnName];\n                if (column) {\n                    deletedColumns[columnName] = column;\n                    modifiedColumns[columnName] = new Array(rowCount);\n                }\n                delete columns[columnName];\n            }\n            if (!Object.keys(columns).length) {\n                table.rowCount = 0;\n                this.deleteRowIndexReferences();\n            }\n            if (modifier) {\n                modifier.modifyColumns(table, modifiedColumns, 0, eventDetail);\n            }\n            table.emit({\n                type: 'afterDeleteColumns',\n                columns: deletedColumns,\n                columnNames: columnNames,\n                detail: eventDetail\n            });\n            return deletedColumns;\n        }\n    };\n    /**\n     * Deletes the row index references. This is useful when the original table\n     * is deleted, and the references are no longer needed. This table is\n     * then considered an original table or a table that has the same row's\n     * order as the original table.\n     */\n    DataTable.prototype.deleteRowIndexReferences = function () {\n        delete this.originalRowIndexes;\n        delete this.localRowIndexes;\n        // Here, in case of future need, can be implemented updating of the\n        // modified tables' row indexes references.\n    };\n    /**\n     * Deletes rows in this table.\n     *\n     * @function Highcharts.DataTable#deleteRows\n     *\n     * @param {number} [rowIndex]\n     * Index to start delete of rows. If not specified, all rows will be\n     * deleted.\n     *\n     * @param {number} [rowCount=1]\n     * Number of rows to delete.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Array<Highcharts.DataTableRow>}\n     * Returns the deleted rows, if found.\n     *\n     * @emits #deleteRows\n     * @emits #afterDeleteRows\n     */\n    DataTable.prototype.deleteRows = function (rowIndex, rowCount, eventDetail) {\n        if (rowCount === void 0) { rowCount = 1; }\n        var table = this,\n            deletedRows = [],\n            modifiedRows = [],\n            modifier = table.modifier;\n        table.emit({\n            type: 'deleteRows',\n            detail: eventDetail,\n            rowCount: rowCount,\n            rowIndex: (rowIndex || 0)\n        });\n        if (typeof rowIndex === 'undefined') {\n            rowIndex = 0;\n            rowCount = table.rowCount;\n        }\n        if (rowCount > 0 && rowIndex < table.rowCount) {\n            var columns = table.columns,\n                columnNames = Object.keys(columns);\n            for (var i = 0, iEnd = columnNames.length, column = void 0, deletedCells = void 0; i < iEnd; ++i) {\n                column = columns[columnNames[i]];\n                deletedCells = column.splice(rowIndex, rowCount);\n                if (!i) {\n                    table.rowCount = column.length;\n                }\n                for (var j = 0, jEnd = deletedCells.length; j < jEnd; ++j) {\n                    deletedRows[j] = (deletedRows[j] || []);\n                    deletedRows[j][i] = deletedCells[j];\n                }\n                modifiedRows.push(new Array(iEnd));\n            }\n        }\n        if (modifier) {\n            modifier.modifyRows(table, modifiedRows, (rowIndex || 0), eventDetail);\n        }\n        table.emit({\n            type: 'afterDeleteRows',\n            detail: eventDetail,\n            rowCount: rowCount,\n            rowIndex: (rowIndex || 0),\n            rows: deletedRows\n        });\n        return deletedRows;\n    };\n    /**\n     * Emits an event on this table to all registered callbacks of the given\n     * event.\n     * @private\n     *\n     * @param {DataTable.Event} e\n     * Event object with event information.\n     */\n    DataTable.prototype.emit = function (e) {\n        if ([\n            'afterDeleteColumns',\n            'afterDeleteRows',\n            'afterSetCell',\n            'afterSetColumns',\n            'afterSetRows'\n        ].includes(e.type)) {\n            this.versionTag = DataTable_uniqueKey();\n        }\n        DataTable_fireEvent(this, e.type, e);\n    };\n    /**\n     * Fetches a single cell value.\n     *\n     * @function Highcharts.DataTable#getCell\n     *\n     * @param {string} columnName\n     * Column name of the cell to retrieve.\n     *\n     * @param {number} rowIndex\n     * Row index of the cell to retrieve.\n     *\n     * @return {Highcharts.DataTableCellType|undefined}\n     * Returns the cell value or `undefined`.\n     */\n    DataTable.prototype.getCell = function (columnName, rowIndex) {\n        var table = this;\n        var column = table.columns[columnName];\n        if (column) {\n            return column[rowIndex];\n        }\n    };\n    /**\n     * Fetches a cell value for the given row as a boolean.\n     *\n     * @function Highcharts.DataTable#getCellAsBoolean\n     *\n     * @param {string} columnName\n     * Column name to fetch.\n     *\n     * @param {number} rowIndex\n     * Row index to fetch.\n     *\n     * @return {boolean}\n     * Returns the cell value of the row as a boolean.\n     */\n    DataTable.prototype.getCellAsBoolean = function (columnName, rowIndex) {\n        var table = this;\n        var column = table.columns[columnName];\n        return !!(column && column[rowIndex]);\n    };\n    /**\n     * Fetches a cell value for the given row as a number.\n     *\n     * @function Highcharts.DataTable#getCellAsNumber\n     *\n     * @param {string} columnName\n     * Column name or to fetch.\n     *\n     * @param {number} rowIndex\n     * Row index to fetch.\n     *\n     * @param {boolean} [useNaN]\n     * Whether to return NaN instead of `null` and `undefined`.\n     *\n     * @return {number|null}\n     * Returns the cell value of the row as a number.\n     */\n    DataTable.prototype.getCellAsNumber = function (columnName, rowIndex, useNaN) {\n        var table = this;\n        var column = table.columns[columnName];\n        var cellValue = (column && column[rowIndex]);\n        switch (typeof cellValue) {\n            case 'boolean':\n                return (cellValue ? 1 : 0);\n            case 'number':\n                return (isNaN(cellValue) && !useNaN ? null : cellValue);\n        }\n        cellValue = parseFloat(\"\".concat(cellValue !== null && cellValue !== void 0 ? cellValue : ''));\n        return (isNaN(cellValue) && !useNaN ? null : cellValue);\n    };\n    /**\n     * Fetches a cell value for the given row as a string.\n     *\n     * @function Highcharts.DataTable#getCellAsString\n     *\n     * @param {string} columnName\n     * Column name to fetch.\n     *\n     * @param {number} rowIndex\n     * Row index to fetch.\n     *\n     * @return {string}\n     * Returns the cell value of the row as a string.\n     */\n    DataTable.prototype.getCellAsString = function (columnName, rowIndex) {\n        var table = this;\n        var column = table.columns[columnName];\n        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n        return \"\".concat((column && column[rowIndex]));\n    };\n    /**\n     * Fetches the given column by the canonical column name.\n     * This function is a simplified wrap of {@link getColumns}.\n     *\n     * @function Highcharts.DataTable#getColumn\n     *\n     * @param {string} columnName\n     * Name of the column to get.\n     *\n     * @param {boolean} [asReference]\n     * Whether to return the column as a readonly reference.\n     *\n     * @return {Highcharts.DataTableColumn|undefined}\n     * A copy of the column, or `undefined` if not found.\n     */\n    DataTable.prototype.getColumn = function (columnName, asReference) {\n        return this.getColumns([columnName], asReference)[columnName];\n    };\n    /**\n     * Fetches the given column by the canonical column name, and\n     * validates the type of the first few cells. If the first defined cell is\n     * of type number, it assumes for performance reasons, that all cells are of\n     * type number or `null`. Otherwise it will convert all cells to number\n     * type, except `null`.\n     *\n     * @function Highcharts.DataTable#getColumnAsNumbers\n     *\n     * @param {string} columnName\n     * Name of the column to get.\n     *\n     * @param {boolean} [useNaN]\n     * Whether to use NaN instead of `null` and `undefined`.\n     *\n     * @return {Array<(number|null)>}\n     * A copy of the column, or an empty array if not found.\n     */\n    DataTable.prototype.getColumnAsNumbers = function (columnName, useNaN) {\n        var table = this,\n            columns = table.columns;\n        var column = columns[columnName],\n            columnAsNumber = [];\n        if (column) {\n            var columnLength = column.length;\n            if (useNaN) {\n                for (var i = 0; i < columnLength; ++i) {\n                    columnAsNumber.push(table.getCellAsNumber(columnName, i, true));\n                }\n            }\n            else {\n                for (var i = 0, cellValue = void 0; i < columnLength; ++i) {\n                    cellValue = column[i];\n                    if (typeof cellValue === 'number') {\n                        // Assume unmixed data for performance reasons\n                        return column.slice();\n                    }\n                    if (cellValue !== null &&\n                        typeof cellValue !== 'undefined') {\n                        break;\n                    }\n                }\n                for (var i = 0; i < columnLength; ++i) {\n                    columnAsNumber.push(table.getCellAsNumber(columnName, i));\n                }\n            }\n        }\n        return columnAsNumber;\n    };\n    /**\n     * Fetches all column names.\n     *\n     * @function Highcharts.DataTable#getColumnNames\n     *\n     * @return {Array<string>}\n     * Returns all column names.\n     */\n    DataTable.prototype.getColumnNames = function () {\n        var table = this,\n            columnNames = Object.keys(table.columns);\n        return columnNames;\n    };\n    /**\n     * Retrieves all or the given columns.\n     *\n     * @function Highcharts.DataTable#getColumns\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names to retrieve.\n     *\n     * @param {boolean} [asReference]\n     * Whether to return columns as a readonly reference.\n     *\n     * @return {Highcharts.DataTableColumnCollection}\n     * Collection of columns. If a requested column was not found, it is\n     * `undefined`.\n     */\n    DataTable.prototype.getColumns = function (columnNames, asReference) {\n        var table = this,\n            tableColumns = table.columns,\n            columns = {};\n        columnNames = (columnNames || Object.keys(tableColumns));\n        for (var i = 0, iEnd = columnNames.length, column = void 0, columnName = void 0; i < iEnd; ++i) {\n            columnName = columnNames[i];\n            column = tableColumns[columnName];\n            if (column) {\n                columns[columnName] = (asReference ? column : column.slice());\n            }\n        }\n        return columns;\n    };\n    /**\n     * Takes the original row index and returns the local row index in the\n     * modified table for which this function is called.\n     *\n     * @param {number} originalRowIndex\n     * Original row index to get the local row index for.\n     *\n     * @return {number|undefined}\n     * Returns the local row index or `undefined` if not found.\n     */\n    DataTable.prototype.getLocalRowIndex = function (originalRowIndex) {\n        var localRowIndexes = this.localRowIndexes;\n        if (localRowIndexes) {\n            return localRowIndexes[originalRowIndex];\n        }\n        return originalRowIndex;\n    };\n    /**\n     * Retrieves the modifier for the table.\n     * @private\n     *\n     * @return {Highcharts.DataModifier|undefined}\n     * Returns the modifier or `undefined`.\n     */\n    DataTable.prototype.getModifier = function () {\n        return this.modifier;\n    };\n    /**\n     * Takes the local row index and returns the index of the corresponding row\n     * in the original table.\n     *\n     * @param {number} rowIndex\n     * Local row index to get the original row index for.\n     *\n     * @return {number|undefined}\n     * Returns the original row index or `undefined` if not found.\n     */\n    DataTable.prototype.getOriginalRowIndex = function (rowIndex) {\n        var originalRowIndexes = this.originalRowIndexes;\n        if (originalRowIndexes) {\n            return originalRowIndexes[rowIndex];\n        }\n        return rowIndex;\n    };\n    /**\n     * Retrieves the row at a given index. This function is a simplified wrap of\n     * {@link getRows}.\n     *\n     * @function Highcharts.DataTable#getRow\n     *\n     * @param {number} rowIndex\n     * Row index to retrieve. First row has index 0.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names in order to retrieve.\n     *\n     * @return {Highcharts.DataTableRow}\n     * Returns the row values, or `undefined` if not found.\n     */\n    DataTable.prototype.getRow = function (rowIndex, columnNames) {\n        return this.getRows(rowIndex, 1, columnNames)[0];\n    };\n    /**\n     * Returns the number of rows in this table.\n     *\n     * @function Highcharts.DataTable#getRowCount\n     *\n     * @return {number}\n     * Number of rows in this table.\n     */\n    DataTable.prototype.getRowCount = function () {\n        // @todo Implement via property getter `.length` browsers supported\n        return this.rowCount;\n    };\n    /**\n     * Retrieves the index of the first row matching a specific cell value.\n     *\n     * @function Highcharts.DataTable#getRowIndexBy\n     *\n     * @param {string} columnName\n     * Column to search in.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Cell value to search for. `NaN` and `undefined` are not supported.\n     *\n     * @param {number} [rowIndexOffset]\n     * Index offset to start searching.\n     *\n     * @return {number|undefined}\n     * Index of the first row matching the cell value.\n     */\n    DataTable.prototype.getRowIndexBy = function (columnName, cellValue, rowIndexOffset) {\n        var table = this;\n        var column = table.columns[columnName];\n        if (column) {\n            var rowIndex = column.indexOf(cellValue,\n                rowIndexOffset);\n            if (rowIndex !== -1) {\n                return rowIndex;\n            }\n        }\n    };\n    /**\n     * Retrieves the row at a given index. This function is a simplified wrap of\n     * {@link getRowObjects}.\n     *\n     * @function Highcharts.DataTable#getRowObject\n     *\n     * @param {number} rowIndex\n     * Row index.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names and their order to retrieve.\n     *\n     * @return {Highcharts.DataTableRowObject}\n     * Returns the row values, or `undefined` if not found.\n     */\n    DataTable.prototype.getRowObject = function (rowIndex, columnNames) {\n        return this.getRowObjects(rowIndex, 1, columnNames)[0];\n    };\n    /**\n     * Fetches all or a number of rows.\n     *\n     * @function Highcharts.DataTable#getRowObjects\n     *\n     * @param {number} [rowIndex]\n     * Index of the first row to fetch. Defaults to first row at index `0`.\n     *\n     * @param {number} [rowCount]\n     * Number of rows to fetch. Defaults to maximal number of rows.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names and their order to retrieve.\n     *\n     * @return {Highcharts.DataTableRowObject}\n     * Returns retrieved rows.\n     */\n    DataTable.prototype.getRowObjects = function (rowIndex, rowCount, columnNames) {\n        if (rowIndex === void 0) { rowIndex = 0; }\n        if (rowCount === void 0) { rowCount = (this.rowCount - rowIndex); }\n        var table = this,\n            columns = table.columns,\n            rows = new Array(rowCount);\n        columnNames = (columnNames || Object.keys(columns));\n        for (var i = rowIndex, i2 = 0, iEnd = Math.min(table.rowCount, (rowIndex + rowCount)), column = void 0, row = void 0; i < iEnd; ++i, ++i2) {\n            row = rows[i2] = {};\n            for (var _i = 0, columnNames_1 = columnNames; _i < columnNames_1.length; _i++) {\n                var columnName = columnNames_1[_i];\n                column = columns[columnName];\n                row[columnName] = (column ? column[i] : void 0);\n            }\n        }\n        return rows;\n    };\n    /**\n     * Fetches all or a number of rows.\n     *\n     * @function Highcharts.DataTable#getRows\n     *\n     * @param {number} [rowIndex]\n     * Index of the first row to fetch. Defaults to first row at index `0`.\n     *\n     * @param {number} [rowCount]\n     * Number of rows to fetch. Defaults to maximal number of rows.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names and their order to retrieve.\n     *\n     * @return {Highcharts.DataTableRow}\n     * Returns retrieved rows.\n     */\n    DataTable.prototype.getRows = function (rowIndex, rowCount, columnNames) {\n        if (rowIndex === void 0) { rowIndex = 0; }\n        if (rowCount === void 0) { rowCount = (this.rowCount - rowIndex); }\n        var table = this,\n            columns = table.columns,\n            rows = new Array(rowCount);\n        columnNames = (columnNames || Object.keys(columns));\n        for (var i = rowIndex, i2 = 0, iEnd = Math.min(table.rowCount, (rowIndex + rowCount)), column = void 0, row = void 0; i < iEnd; ++i, ++i2) {\n            row = rows[i2] = [];\n            for (var _i = 0, columnNames_2 = columnNames; _i < columnNames_2.length; _i++) {\n                var columnName = columnNames_2[_i];\n                column = columns[columnName];\n                row.push(column ? column[i] : void 0);\n            }\n        }\n        return rows;\n    };\n    /**\n     * Returns the unique version tag of the current state of the table.\n     *\n     * @function Highcharts.DataTable#getVersionTag\n     *\n     * @return {string}\n     * Unique version tag.\n     */\n    DataTable.prototype.getVersionTag = function () {\n        return this.versionTag;\n    };\n    /**\n     * Checks for given column names.\n     *\n     * @function Highcharts.DataTable#hasColumns\n     *\n     * @param {Array<string>} columnNames\n     * Column names to check.\n     *\n     * @return {boolean}\n     * Returns `true` if all columns have been found, otherwise `false`.\n     */\n    DataTable.prototype.hasColumns = function (columnNames) {\n        var table = this,\n            columns = table.columns;\n        for (var i = 0, iEnd = columnNames.length, columnName = void 0; i < iEnd; ++i) {\n            columnName = columnNames[i];\n            if (!columns[columnName]) {\n                return false;\n            }\n        }\n        return true;\n    };\n    /**\n     * Searches for a specific cell value.\n     *\n     * @function Highcharts.DataTable#hasRowWith\n     *\n     * @param {string} columnName\n     * Column to search in.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Cell value to search for. `NaN` and `undefined` are not supported.\n     *\n     * @return {boolean}\n     * True, if a row has been found, otherwise false.\n     */\n    DataTable.prototype.hasRowWith = function (columnName, cellValue) {\n        var table = this;\n        var column = table.columns[columnName];\n        if (column) {\n            return (column.indexOf(cellValue) !== -1);\n        }\n        return false;\n    };\n    /**\n     * Registers a callback for a specific event.\n     *\n     * @function Highcharts.DataTable#on\n     *\n     * @param {string} type\n     * Event type as a string.\n     *\n     * @param {Highcharts.EventCallbackFunction<Highcharts.DataTable>} callback\n     * Function to register for an event callback.\n     *\n     * @return {Function}\n     * Function to unregister callback from the event.\n     */\n    DataTable.prototype.on = function (type, callback) {\n        return DataTable_addEvent(this, type, callback);\n    };\n    /**\n     * Renames a column of cell values.\n     *\n     * @function Highcharts.DataTable#renameColumn\n     *\n     * @param {string} columnName\n     * Name of the column to be renamed.\n     *\n     * @param {string} newColumnName\n     * New name of the column. An existing column with the same name will be\n     * replaced.\n     *\n     * @return {boolean}\n     * Returns `true` if successful, `false` if the column was not found.\n     */\n    DataTable.prototype.renameColumn = function (columnName, newColumnName) {\n        var table = this,\n            columns = table.columns;\n        if (columns[columnName]) {\n            if (columnName !== newColumnName) {\n                columns[newColumnName] = columns[columnName];\n                delete columns[columnName];\n            }\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Sets a cell value based on the row index and column.  Will\n     * insert a new column, if not found.\n     *\n     * @function Highcharts.DataTable#setCell\n     *\n     * @param {string} columnName\n     * Column name to set.\n     *\n     * @param {number|undefined} rowIndex\n     * Row index to set.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Cell value to set.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setCell\n     * @emits #afterSetCell\n     */\n    DataTable.prototype.setCell = function (columnName, rowIndex, cellValue, eventDetail) {\n        var table = this,\n            columns = table.columns,\n            modifier = table.modifier;\n        var column = columns[columnName];\n        if (column && column[rowIndex] === cellValue) {\n            return;\n        }\n        table.emit({\n            type: 'setCell',\n            cellValue: cellValue,\n            columnName: columnName,\n            detail: eventDetail,\n            rowIndex: rowIndex\n        });\n        if (!column) {\n            column = columns[columnName] = new Array(table.rowCount);\n        }\n        if (rowIndex >= table.rowCount) {\n            table.rowCount = (rowIndex + 1);\n        }\n        column[rowIndex] = cellValue;\n        if (modifier) {\n            modifier.modifyCell(table, columnName, rowIndex, cellValue);\n        }\n        table.emit({\n            type: 'afterSetCell',\n            cellValue: cellValue,\n            columnName: columnName,\n            detail: eventDetail,\n            rowIndex: rowIndex\n        });\n    };\n    /**\n     * Sets cell values for multiple columns. Will insert new columns, if not\n     * found.\n     *\n     * @function Highcharts.DataTable#setColumns\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first row to change. Keep undefined to reset.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setColumns\n     * @emits #afterSetColumns\n     */\n    DataTable.prototype.setColumns = function (columns, rowIndex, eventDetail) {\n        var table = this,\n            tableColumns = table.columns,\n            tableModifier = table.modifier,\n            columnNames = Object.keys(columns);\n        var rowCount = table.rowCount;\n        table.emit({\n            type: 'setColumns',\n            columns: columns,\n            columnNames: columnNames,\n            detail: eventDetail,\n            rowIndex: rowIndex\n        });\n        if (typeof rowIndex === 'undefined') {\n            _super.prototype.setColumns.call(this, columns, rowIndex, extend(eventDetail, { silent: true }));\n        }\n        else {\n            for (var i = 0, iEnd = columnNames.length, column = void 0, columnName = void 0; i < iEnd; ++i) {\n                columnName = columnNames[i];\n                column = columns[columnName];\n                var tableColumn = (tableColumns[columnName] ?\n                        tableColumns[columnName] :\n                        tableColumns[columnName] = new Array(table.rowCount));\n                for (var i_1 = (rowIndex || 0), iEnd_1 = column.length; i_1 < iEnd_1; ++i_1) {\n                    tableColumn[i_1] = column[i_1];\n                }\n                rowCount = Math.max(rowCount, tableColumn.length);\n            }\n            this.applyRowCount(rowCount);\n        }\n        if (tableModifier) {\n            tableModifier.modifyColumns(table, columns, rowIndex || 0);\n        }\n        table.emit({\n            type: 'afterSetColumns',\n            columns: columns,\n            columnNames: columnNames,\n            detail: eventDetail,\n            rowIndex: rowIndex\n        });\n    };\n    /**\n     * Sets or unsets the modifier for the table.\n     *\n     * @param {Highcharts.DataModifier} [modifier]\n     * Modifier to set, or `undefined` to unset.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Promise<Highcharts.DataTable>}\n     * Resolves to this table if successful, or rejects on failure.\n     *\n     * @emits #setModifier\n     * @emits #afterSetModifier\n     */\n    DataTable.prototype.setModifier = function (modifier, eventDetail) {\n        var table = this;\n        var promise;\n        table.emit({\n            type: 'setModifier',\n            detail: eventDetail,\n            modifier: modifier,\n            modified: table.modified\n        });\n        table.modified = table;\n        table.modifier = modifier;\n        if (modifier) {\n            promise = modifier.modify(table);\n        }\n        else {\n            promise = Promise.resolve(table);\n        }\n        return promise\n            .then(function (table) {\n            table.emit({\n                type: 'afterSetModifier',\n                detail: eventDetail,\n                modifier: modifier,\n                modified: table.modified\n            });\n            return table;\n        })['catch'](function (error) {\n            table.emit({\n                type: 'setModifierError',\n                error: error,\n                modifier: modifier,\n                modified: table.modified\n            });\n            throw error;\n        });\n    };\n    /**\n     * Sets the original row indexes for the table. It is used to keep the\n     * reference to the original rows when modifying the table.\n     *\n     * @param {Array<number|undefined>} originalRowIndexes\n     * Original row indexes array.\n     *\n     * @param {boolean} omitLocalRowIndexes\n     * Whether to omit the local row indexes calculation. Defaults to `false`.\n     */\n    DataTable.prototype.setOriginalRowIndexes = function (originalRowIndexes, omitLocalRowIndexes) {\n        if (omitLocalRowIndexes === void 0) { omitLocalRowIndexes = false; }\n        this.originalRowIndexes = originalRowIndexes;\n        if (omitLocalRowIndexes) {\n            return;\n        }\n        var modifiedIndexes = this.localRowIndexes = [];\n        for (var i = 0, iEnd = originalRowIndexes.length, originalIndex = void 0; i < iEnd; ++i) {\n            originalIndex = originalRowIndexes[i];\n            if (defined(originalIndex)) {\n                modifiedIndexes[originalIndex] = i;\n            }\n        }\n    };\n    /**\n     * Sets cell values of a row. Will insert a new row, if no index was\n     * provided, or if the index is higher than the total number of table rows.\n     *\n     * Note: This function is just a simplified wrap of\n     * {@link Highcharts.DataTable#setRows}.\n     *\n     * @function Highcharts.DataTable#setRow\n     *\n     * @param {Highcharts.DataTableRow|Highcharts.DataTableRowObject} row\n     * Cell values to set.\n     *\n     * @param {number} [rowIndex]\n     * Index of the row to set. Leave `undefind` to add as a new row.\n     *\n     * @param {boolean} [insert]\n     * Whether to insert the row at the given index, or to overwrite the row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setRows\n     * @emits #afterSetRows\n     */\n    DataTable.prototype.setRow = function (row, rowIndex, insert, eventDetail) {\n        this.setRows([row], rowIndex, insert, eventDetail);\n    };\n    /**\n     * Sets cell values for multiple rows. Will insert new rows, if no index was\n     * was provided, or if the index is higher than the total number of table\n     * rows.\n     *\n     * @function Highcharts.DataTable#setRows\n     *\n     * @param {Array<(Highcharts.DataTableRow|Highcharts.DataTableRowObject)>} rows\n     * Row values to set.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first row to set. Leave `undefined` to add as new rows.\n     *\n     * @param {boolean} [insert]\n     * Whether to insert the row at the given index, or to overwrite the row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setRows\n     * @emits #afterSetRows\n     */\n    DataTable.prototype.setRows = function (rows, rowIndex, insert, eventDetail) {\n        if (rowIndex === void 0) { rowIndex = this.rowCount; }\n        var table = this,\n            columns = table.columns,\n            columnNames = Object.keys(columns),\n            modifier = table.modifier,\n            rowCount = rows.length;\n        table.emit({\n            type: 'setRows',\n            detail: eventDetail,\n            rowCount: rowCount,\n            rowIndex: rowIndex,\n            rows: rows\n        });\n        for (var i = 0, i2 = rowIndex, row = void 0; i < rowCount; ++i, ++i2) {\n            row = rows[i];\n            if (row === DataTable.NULL) {\n                for (var j = 0, jEnd = columnNames.length; j < jEnd; ++j) {\n                    if (insert) {\n                        columns[columnNames[j]].splice(i2, 0, null);\n                    }\n                    else {\n                        columns[columnNames[j]][i2] = null;\n                    }\n                }\n            }\n            else if (row instanceof Array) {\n                for (var j = 0, jEnd = columnNames.length; j < jEnd; ++j) {\n                    columns[columnNames[j]][i2] = row[j];\n                }\n            }\n            else {\n                _super.prototype.setRow.call(this, row, i2, void 0, { silent: true });\n            }\n        }\n        var indexRowCount = insert ?\n                rowCount + rows.length :\n                rowIndex + rowCount;\n        if (indexRowCount > table.rowCount) {\n            table.rowCount = indexRowCount;\n            for (var i = 0, iEnd = columnNames.length; i < iEnd; ++i) {\n                columns[columnNames[i]].length = indexRowCount;\n            }\n        }\n        if (modifier) {\n            modifier.modifyRows(table, rows, rowIndex);\n        }\n        table.emit({\n            type: 'afterSetRows',\n            detail: eventDetail,\n            rowCount: rowCount,\n            rowIndex: rowIndex,\n            rows: rows\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Null state for a row record. In some cases, a row in a table may not\n     * contain any data or may be invalid. In these cases, a null state can be\n     * used to indicate that the row record is empty or invalid.\n     *\n     * @name Highcharts.DataTable.NULL\n     * @type {Highcharts.DataTableRowObject}\n     *\n     * @see {@link Highcharts.DataTable.isNull} for a null test.\n     *\n     * @example\n     * table.setRows([DataTable.NULL, DataTable.NULL], 10);\n     */\n    DataTable.NULL = {};\n    /**\n     * Semantic version string of the DataTable class.\n     * @internal\n     */\n    DataTable.version = '1.0.0';\n    return DataTable;\n}(Data_DataTableCore));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Data_DataTable = (DataTable);\n\n;// ./code/es5/es-modules/Data/Connectors/DataConnector.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Wojciech Chmiel\n *  - Gøran Slettemark\n *\n * */\n\n\n\n\nvar DataConnector_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, DataConnector_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, DataConnector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Abstract class providing an interface for managing a DataConnector.\n *\n * @private\n */\nvar DataConnector = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructor for the connector class.\n     *\n     * @param {DataConnector.UserOptions} [options]\n     * Options to use in the connector.\n     */\n    function DataConnector(options) {\n        if (options === void 0) { options = {}; }\n        this.table = new Data_DataTable(options.dataTable);\n        this.metadata = options.metadata || { columns: {} };\n    }\n    Object.defineProperty(DataConnector.prototype, \"polling\", {\n        /**\n         * Poll timer ID, if active.\n         */\n        get: function () {\n            return !!this.polling;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Method for adding metadata for a single column.\n     *\n     * @param {string} name\n     * The name of the column to be described.\n     *\n     * @param {DataConnector.MetaColumn} columnMeta\n     * The metadata to apply to the column.\n     */\n    DataConnector.prototype.describeColumn = function (name, columnMeta) {\n        var connector = this,\n            columns = connector.metadata.columns;\n        columns[name] = DataConnector_merge(columns[name] || {}, columnMeta);\n    };\n    /**\n     * Method for applying columns meta information to the whole DataConnector.\n     *\n     * @param {Highcharts.Dictionary<DataConnector.MetaColumn>} columns\n     * Pairs of column names and MetaColumn objects.\n     */\n    DataConnector.prototype.describeColumns = function (columns) {\n        var connector = this,\n            columnNames = Object.keys(columns);\n        var columnName;\n        while (typeof (columnName = columnNames.pop()) === 'string') {\n            connector.describeColumn(columnName, columns[columnName]);\n        }\n    };\n    /**\n     * Emits an event on the connector to all registered callbacks of this\n     * event.\n     *\n     * @param {DataConnector.Event} [e]\n     * Event object containing additional event information.\n     */\n    DataConnector.prototype.emit = function (e) {\n        DataConnector_fireEvent(this, e.type, e);\n    };\n    /**\n     * Returns the order of columns.\n     *\n     * @param {boolean} [usePresentationState]\n     * Whether to use the column order of the presentation state of the table.\n     *\n     * @return {Array<string>|undefined}\n     * Order of columns.\n     */\n    DataConnector.prototype.getColumnOrder = function (\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    usePresentationState) {\n        var connector = this,\n            columns = connector.metadata.columns,\n            names = Object.keys(columns || {});\n        if (names.length) {\n            return names.sort(function (a, b) { return (pick(columns[a].index, 0) - pick(columns[b].index, 0)); });\n        }\n    };\n    /**\n     * Retrieves the columns of the dataTable,\n     * applies column order from meta.\n     *\n     * @param {boolean} [usePresentationOrder]\n     * Whether to use the column order of the presentation state of the table.\n     *\n     * @return {Highcharts.DataTableColumnCollection}\n     * An object with the properties `columnNames` and `columnValues`\n     */\n    DataConnector.prototype.getSortedColumns = function (usePresentationOrder) {\n        return this.table.getColumns(this.getColumnOrder(usePresentationOrder));\n    };\n    /**\n     * The default load method, which fires the `afterLoad` event\n     *\n     * @return {Promise<DataConnector>}\n     * The loaded connector.\n     *\n     * @emits DataConnector#afterLoad\n     */\n    DataConnector.prototype.load = function () {\n        DataConnector_fireEvent(this, 'afterLoad', { table: this.table });\n        return Promise.resolve(this);\n    };\n    /**\n     * Registers a callback for a specific connector event.\n     *\n     * @param {string} type\n     * Event type as a string.\n     *\n     * @param {DataEventEmitter.Callback} callback\n     * Function to register for the connector callback.\n     *\n     * @return {Function}\n     * Function to unregister callback from the connector event.\n     */\n    DataConnector.prototype.on = function (type, callback) {\n        return DataConnector_addEvent(this, type, callback);\n    };\n    /**\n     * The default save method, which fires the `afterSave` event.\n     *\n     * @return {Promise<DataConnector>}\n     * The saved connector.\n     *\n     * @emits DataConnector#afterSave\n     * @emits DataConnector#saveError\n     */\n    DataConnector.prototype.save = function () {\n        DataConnector_fireEvent(this, 'saveError', { table: this.table });\n        return Promise.reject(new Error('Not implemented'));\n    };\n    /**\n     * Sets the index and order of columns.\n     *\n     * @param {Array<string>} columnNames\n     * Order of columns.\n     */\n    DataConnector.prototype.setColumnOrder = function (columnNames) {\n        var connector = this;\n        for (var i = 0, iEnd = columnNames.length; i < iEnd; ++i) {\n            connector.describeColumn(columnNames[i], { index: i });\n        }\n    };\n    DataConnector.prototype.setModifierOptions = function (modifierOptions) {\n        var _this = this;\n        var ModifierClass = (modifierOptions &&\n                Modifiers_DataModifier.types[modifierOptions.type]);\n        return this.table\n            .setModifier(ModifierClass ?\n            new ModifierClass(modifierOptions) :\n            void 0)\n            .then(function () { return _this; });\n    };\n    /**\n     * Starts polling new data after the specific time span in milliseconds.\n     *\n     * @param {number} refreshTime\n     * Refresh time in milliseconds between polls.\n     */\n    DataConnector.prototype.startPolling = function (refreshTime) {\n        if (refreshTime === void 0) { refreshTime = 1000; }\n        var connector = this;\n        window.clearTimeout(connector._polling);\n        connector._polling = window.setTimeout(function () { return connector\n            .load()['catch'](function (error) { return connector.emit({\n            type: 'loadError',\n            error: error,\n            table: connector.table\n        }); })\n            .then(function () {\n            if (connector._polling) {\n                connector.startPolling(refreshTime);\n            }\n        }); }, refreshTime);\n    };\n    /**\n     * Stops polling data.\n     */\n    DataConnector.prototype.stopPolling = function () {\n        var connector = this;\n        window.clearTimeout(connector._polling);\n        delete connector._polling;\n    };\n    /**\n     * Retrieves metadata from a single column.\n     *\n     * @param {string} name\n     * The identifier for the column that should be described\n     *\n     * @return {DataConnector.MetaColumn|undefined}\n     * Returns a MetaColumn object if found.\n     */\n    DataConnector.prototype.whatIs = function (name) {\n        return this.metadata.columns[name];\n    };\n    return DataConnector;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (DataConnector) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    /**\n     * Registry as a record object with connector names and their class.\n     */\n    DataConnector.types = {};\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Adds a connector class to the registry. The connector has to provide the\n     * `DataConnector.options` property and the `DataConnector.load` method to\n     * modify the table.\n     *\n     * @private\n     *\n     * @param {string} key\n     * Registry key of the connector class.\n     *\n     * @param {DataConnectorType} DataConnectorClass\n     * Connector class (aka class constructor) to register.\n     *\n     * @return {boolean}\n     * Returns true, if the registration was successful. False is returned, if\n     * their is already a connector registered with this key.\n     */\n    function registerType(key, DataConnectorClass) {\n        return (!!key &&\n            !DataConnector.types[key] &&\n            !!(DataConnector.types[key] = DataConnectorClass));\n    }\n    DataConnector.registerType = registerType;\n})(DataConnector || (DataConnector = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Connectors_DataConnector = (DataConnector);\n\n;// ./code/es5/es-modules/Data/Converters/DataConverter.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Sebastian Bochan\n *  - Gøran Slettemark\n *  - Torstein Hønsi\n *  - Wojciech Chmiel\n *  - Jomar Hønsi\n *\n * */\n\n\n\nvar DataConverter_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, DataConverter_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, DataConverter_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Base class providing an interface and basic methods for a DataConverter\n *\n * @private\n */\nvar DataConverter = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the DataConverter.\n     *\n     * @param {DataConverter.UserOptions} [options]\n     * Options for the DataConverter.\n     */\n    function DataConverter(options) {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        /**\n         * A collection of available date formats.\n         */\n        this.dateFormats = {\n            'YYYY/mm/dd': {\n                regex: /^(\\d{4})([\\-\\.\\/])(\\d{1,2})\\2(\\d{1,2})$/,\n                parser: function (match) {\n                    return (match ?\n                        Date.UTC(+match[1], match[3] - 1, +match[4]) :\n                        NaN);\n                }\n            },\n            'dd/mm/YYYY': {\n                regex: /^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{4})$/,\n                parser: function (match) {\n                    return (match ?\n                        Date.UTC(+match[4], match[3] - 1, +match[1]) :\n                        NaN);\n                },\n                alternative: 'mm/dd/YYYY' // Different format with the same regex\n            },\n            'mm/dd/YYYY': {\n                regex: /^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{4})$/,\n                parser: function (match) {\n                    return (match ?\n                        Date.UTC(+match[4], match[1] - 1, +match[3]) :\n                        NaN);\n                }\n            },\n            'dd/mm/YY': {\n                regex: /^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{2})$/,\n                parser: function (match) {\n                    var d = new Date();\n                    if (!match) {\n                        return NaN;\n                    }\n                    var year = +match[4];\n                    if (year > (d.getFullYear() - 2000)) {\n                        year += 1900;\n                    }\n                    else {\n                        year += 2000;\n                    }\n                    return Date.UTC(year, match[3] - 1, +match[1]);\n                },\n                alternative: 'mm/dd/YY' // Different format with the same regex\n            },\n            'mm/dd/YY': {\n                regex: /^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{2})$/,\n                parser: function (match) {\n                    return (match ?\n                        Date.UTC(+match[4] + 2000, match[1] - 1, +match[3]) :\n                        NaN);\n                }\n            }\n        };\n        var mergedOptions = DataConverter_merge(DataConverter.defaultOptions,\n            options);\n        var regExpPoint = mergedOptions.decimalPoint;\n        if (regExpPoint === '.' || regExpPoint === ',') {\n            regExpPoint = regExpPoint === '.' ? '\\\\.' : ',';\n            this.decimalRegExp =\n                new RegExp('^(-?[0-9]+)' + regExpPoint + '([0-9]+)$');\n        }\n        this.options = mergedOptions;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Converts a value to a boolean.\n     *\n     * @param {DataConverter.Type} value\n     * Value to convert.\n     *\n     * @return {boolean}\n     * Converted value as a boolean.\n     */\n    DataConverter.prototype.asBoolean = function (value) {\n        if (typeof value === 'boolean') {\n            return value;\n        }\n        if (typeof value === 'string') {\n            return value !== '' && value !== '0' && value !== 'false';\n        }\n        return !!this.asNumber(value);\n    };\n    /**\n     * Converts a value to a Date.\n     *\n     * @param {DataConverter.Type} value\n     * Value to convert.\n     *\n     * @return {globalThis.Date}\n     * Converted value as a Date.\n     */\n    DataConverter.prototype.asDate = function (value) {\n        var timestamp;\n        if (typeof value === 'string') {\n            timestamp = this.parseDate(value);\n        }\n        else if (typeof value === 'number') {\n            timestamp = value;\n        }\n        else if (value instanceof Date) {\n            return value;\n        }\n        else {\n            timestamp = this.parseDate(this.asString(value));\n        }\n        return new Date(timestamp);\n    };\n    /**\n     * Casts a string value to it's guessed type\n     *\n     * @param {*} value\n     * The value to examine.\n     *\n     * @return {number|string|Date}\n     * The converted value.\n     */\n    DataConverter.prototype.asGuessedType = function (value) {\n        var converter = this,\n            typeMap = {\n                'number': converter.asNumber,\n                'Date': converter.asDate,\n                'string': converter.asString\n            };\n        return typeMap[converter.guessType(value)].call(converter, value);\n    };\n    /**\n     * Converts a value to a number.\n     *\n     * @param {DataConverter.Type} value\n     * Value to convert.\n     *\n     * @return {number}\n     * Converted value as a number.\n     */\n    DataConverter.prototype.asNumber = function (value) {\n        if (typeof value === 'number') {\n            return value;\n        }\n        if (typeof value === 'boolean') {\n            return value ? 1 : 0;\n        }\n        if (typeof value === 'string') {\n            var decimalRegex = this.decimalRegExp;\n            if (value.indexOf(' ') > -1) {\n                value = value.replace(/\\s+/g, '');\n            }\n            if (decimalRegex) {\n                if (!decimalRegex.test(value)) {\n                    return NaN;\n                }\n                value = value.replace(decimalRegex, '$1.$2');\n            }\n            return parseFloat(value);\n        }\n        if (value instanceof Date) {\n            return value.getDate();\n        }\n        if (value) {\n            return value.getRowCount();\n        }\n        return NaN;\n    };\n    /**\n     * Converts a value to a string.\n     *\n     * @param {DataConverter.Type} value\n     * Value to convert.\n     *\n     * @return {string}\n     * Converted value as a string.\n     */\n    DataConverter.prototype.asString = function (value) {\n        return '' + value;\n    };\n    /**\n     * Tries to guess the date format\n     *  - Check if either month candidate exceeds 12\n     *  - Check if year is missing (use current year)\n     *  - Check if a shortened year format is used (e.g. 1/1/99)\n     *  - If no guess can be made, the user must be prompted\n     * data is the data to deduce a format based on\n     * @private\n     *\n     * @param {Array<string>} data\n     * Data to check the format.\n     *\n     * @param {number} limit\n     * Max data to check the format.\n     *\n     * @param {boolean} save\n     * Whether to save the date format in the converter options.\n     */\n    DataConverter.prototype.deduceDateFormat = function (data, limit, save) {\n        var parser = this,\n            stable = [],\n            max = [];\n        var format = 'YYYY/mm/dd', thing, guessedFormat = [], i = 0, madeDeduction = false, \n            /// candidates = {},\n            elem, j;\n        if (!limit || limit > data.length) {\n            limit = data.length;\n        }\n        for (; i < limit; i++) {\n            if (typeof data[i] !== 'undefined' &&\n                data[i] && data[i].length) {\n                thing = data[i]\n                    .trim()\n                    .replace(/[\\-\\.\\/]/g, ' ')\n                    .split(' ');\n                guessedFormat = [\n                    '',\n                    '',\n                    ''\n                ];\n                for (j = 0; j < thing.length; j++) {\n                    if (j < guessedFormat.length) {\n                        elem = parseInt(thing[j], 10);\n                        if (elem) {\n                            max[j] = (!max[j] || max[j] < elem) ? elem : max[j];\n                            if (typeof stable[j] !== 'undefined') {\n                                if (stable[j] !== elem) {\n                                    stable[j] = false;\n                                }\n                            }\n                            else {\n                                stable[j] = elem;\n                            }\n                            if (elem > 31) {\n                                if (elem < 100) {\n                                    guessedFormat[j] = 'YY';\n                                }\n                                else {\n                                    guessedFormat[j] = 'YYYY';\n                                }\n                                /// madeDeduction = true;\n                            }\n                            else if (elem > 12 &&\n                                elem <= 31) {\n                                guessedFormat[j] = 'dd';\n                                madeDeduction = true;\n                            }\n                            else if (!guessedFormat[j].length) {\n                                guessedFormat[j] = 'mm';\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        if (madeDeduction) {\n            // This handles a few edge cases with hard to guess dates\n            for (j = 0; j < stable.length; j++) {\n                if (stable[j] !== false) {\n                    if (max[j] > 12 &&\n                        guessedFormat[j] !== 'YY' &&\n                        guessedFormat[j] !== 'YYYY') {\n                        guessedFormat[j] = 'YY';\n                    }\n                }\n                else if (max[j] > 12 && guessedFormat[j] === 'mm') {\n                    guessedFormat[j] = 'dd';\n                }\n            }\n            // If the middle one is dd, and the last one is dd,\n            // the last should likely be year.\n            if (guessedFormat.length === 3 &&\n                guessedFormat[1] === 'dd' &&\n                guessedFormat[2] === 'dd') {\n                guessedFormat[2] = 'YY';\n            }\n            format = guessedFormat.join('/');\n            // If the caculated format is not valid, we need to present an\n            // error.\n        }\n        // Save the deduced format in the converter options.\n        if (save) {\n            parser.options.dateFormat = format;\n        }\n        return format;\n    };\n    /**\n     * Emits an event on the DataConverter instance.\n     *\n     * @param {DataConverter.Event} [e]\n     * Event object containing additional event data\n     */\n    DataConverter.prototype.emit = function (e) {\n        DataConverter_fireEvent(this, e.type, e);\n    };\n    /**\n     * Initiates the data exporting. Should emit `exportError` on failure.\n     *\n     * @param {DataConnector} connector\n     * Connector to export from.\n     *\n     * @param {DataConverter.Options} [options]\n     * Options for the export.\n     */\n    DataConverter.prototype.export = function (\n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    connector, options\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    ) {\n        this.emit({\n            type: 'exportError',\n            columns: [],\n            headers: []\n        });\n        throw new Error('Not implemented');\n    };\n    /**\n     * Getter for the data table.\n     *\n     * @return {DataTable}\n     * Table of parsed data.\n     */\n    DataConverter.prototype.getTable = function () {\n        throw new Error('Not implemented');\n    };\n    /**\n     * Guesses the potential type of a string value for parsing CSV etc.\n     *\n     * @param {*} value\n     * The value to examine.\n     *\n     * @return {'number'|'string'|'Date'}\n     * Type string, either `string`, `Date`, or `number`.\n     */\n    DataConverter.prototype.guessType = function (value) {\n        var converter = this;\n        var result = 'string';\n        if (typeof value === 'string') {\n            var trimedValue = converter.trim(\"\".concat(value)),\n                decimalRegExp = converter.decimalRegExp;\n            var innerTrimedValue = converter.trim(trimedValue,\n                true);\n            if (decimalRegExp) {\n                innerTrimedValue = (decimalRegExp.test(innerTrimedValue) ?\n                    innerTrimedValue.replace(decimalRegExp, '$1.$2') :\n                    '');\n            }\n            var floatValue = parseFloat(innerTrimedValue);\n            if (+innerTrimedValue === floatValue) {\n                // String is numeric\n                value = floatValue;\n            }\n            else {\n                // Determine if a date string\n                var dateValue = converter.parseDate(value);\n                result = isNumber(dateValue) ? 'Date' : 'string';\n            }\n        }\n        if (typeof value === 'number') {\n            // Greater than milliseconds in a year assumed timestamp\n            result = value > 365 * 24 * 3600 * 1000 ? 'Date' : 'number';\n        }\n        return result;\n    };\n    /**\n     * Registers a callback for a specific event.\n     *\n     * @param {string} type\n     * Event type as a string.\n     *\n     * @param {DataEventEmitter.Callback} callback\n     * Function to register for an modifier callback.\n     *\n     * @return {Function}\n     * Function to unregister callback from the modifier event.\n     */\n    DataConverter.prototype.on = function (type, callback) {\n        return DataConverter_addEvent(this, type, callback);\n    };\n    /**\n     * Initiates the data parsing. Should emit `parseError` on failure.\n     *\n     * @param {DataConverter.UserOptions} options\n     * Options of the DataConverter.\n     */\n    DataConverter.prototype.parse = function (\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    options) {\n        this.emit({\n            type: 'parseError',\n            columns: [],\n            headers: []\n        });\n        throw new Error('Not implemented');\n    };\n    /**\n     * Parse a date and return it as a number.\n     *\n     * @param {string} value\n     * Value to parse.\n     *\n     * @param {string} dateFormatProp\n     * Which of the predefined date formats\n     * to use to parse date values.\n     */\n    DataConverter.prototype.parseDate = function (value, dateFormatProp) {\n        var converter = this,\n            options = converter.options;\n        var dateFormat = dateFormatProp || options.dateFormat,\n            result = NaN,\n            key,\n            format,\n            match;\n        if (options.parseDate) {\n            result = options.parseDate(value);\n        }\n        else {\n            // Auto-detect the date format the first time\n            if (!dateFormat) {\n                for (key in converter.dateFormats) { // eslint-disable-line guard-for-in\n                    format = converter.dateFormats[key];\n                    match = value.match(format.regex);\n                    if (match) {\n                        // `converter.options.dateFormat` = dateFormat = key;\n                        dateFormat = key;\n                        // `converter.options.alternativeFormat` =\n                        // format.alternative || '';\n                        result = format.parser(match);\n                        break;\n                    }\n                }\n                // Next time, use the one previously found\n            }\n            else {\n                format = converter.dateFormats[dateFormat];\n                if (!format) {\n                    // The selected format is invalid\n                    format = converter.dateFormats['YYYY/mm/dd'];\n                }\n                match = value.match(format.regex);\n                if (match) {\n                    result = format.parser(match);\n                }\n            }\n            // Fall back to Date.parse\n            if (!match) {\n                match = Date.parse(value);\n                // External tools like Date.js and MooTools extend Date object\n                // and returns a date.\n                if (typeof match === 'object' &&\n                    match !== null &&\n                    match.getTime) {\n                    result = (match.getTime() -\n                        match.getTimezoneOffset() *\n                            60000);\n                    // Timestamp\n                }\n                else if (isNumber(match)) {\n                    result = match - (new Date(match)).getTimezoneOffset() * 60000;\n                    if ( // Reset dates without year in Chrome\n                    value.indexOf('2001') === -1 &&\n                        (new Date(result)).getFullYear() === 2001) {\n                        result = NaN;\n                    }\n                }\n            }\n        }\n        return result;\n    };\n    /**\n     * Trim a string from whitespaces.\n     *\n     * @param {string} str\n     * String to trim.\n     *\n     * @param {boolean} [inside=false]\n     * Remove all spaces between numbers.\n     *\n     * @return {string}\n     * Trimed string\n     */\n    DataConverter.prototype.trim = function (str, inside) {\n        if (typeof str === 'string') {\n            str = str.replace(/^\\s+|\\s+$/g, '');\n            // Clear white space insdie the string, like thousands separators\n            if (inside && /^[\\d\\s]+$/.test(str)) {\n                str = str.replace(/\\s/g, '');\n            }\n        }\n        return str;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options\n     */\n    DataConverter.defaultOptions = {\n        dateFormat: '',\n        alternativeFormat: '',\n        startColumn: 0,\n        endColumn: Number.MAX_VALUE,\n        startRow: 0,\n        endRow: Number.MAX_VALUE,\n        firstRowAsNames: true,\n        switchRowsAndColumns: false\n    };\n    return DataConverter;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n/**\n * Additionally provided types for events and conversion.\n */\n(function (DataConverter) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    /**\n     * Registry as a record object with connector names and their class.\n     */\n    DataConverter.types = {};\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Adds a converter class to the registry.\n     *\n     * @private\n     *\n     * @param {string} key\n     * Registry key of the converter class.\n     *\n     * @param {DataConverterTypes} DataConverterClass\n     * Connector class (aka class constructor) to register.\n     *\n     * @return {boolean}\n     * Returns true, if the registration was successful. False is returned, if\n     * their is already a converter registered with this key.\n     */\n    function registerType(key, DataConverterClass) {\n        return (!!key &&\n            !DataConverter.types[key] &&\n            !!(DataConverter.types[key] = DataConverterClass));\n    }\n    DataConverter.registerType = registerType;\n    /**\n     * Converts an array of columns to a table instance. Second dimension of the\n     * array are the row cells.\n     *\n     * @param {Array<DataTable.Column>} [columns]\n     * Array to convert.\n     *\n     * @param {Array<string>} [headers]\n     * Column names to use.\n     *\n     * @return {DataTable}\n     * Table instance from the arrays.\n     */\n    function getTableFromColumns(columns, headers) {\n        if (columns === void 0) { columns = []; }\n        if (headers === void 0) { headers = []; }\n        var table = new Data_DataTable();\n        for (var i = 0, iEnd = Math.max(headers.length, columns.length); i < iEnd; ++i) {\n            table.setColumn(headers[i] || \"\".concat(i), columns[i]);\n        }\n        return table;\n    }\n    DataConverter.getTableFromColumns = getTableFromColumns;\n})(DataConverter || (DataConverter = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Converters_DataConverter = (DataConverter);\n\n;// ./code/es5/es-modules/Data/DataCursor.js\n/* *\n *\n *  (c) 2020-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * This class manages state cursors pointing on {@link Data.DataTable}. It\n * creates a relation between states of the user interface and the table cells,\n * columns, or rows.\n *\n * @class\n * @name Data.DataCursor\n */\nvar DataCursor = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function DataCursor(stateMap) {\n        if (stateMap === void 0) { stateMap = {}; }\n        this.emittingRegister = [];\n        this.listenerMap = {};\n        this.stateMap = stateMap;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * This function registers a listener for a specific state and table.\n     *\n     * @example\n     * ```TypeScript\n     * dataCursor.addListener(myTable.id, 'hover', (e: DataCursor.Event) => {\n     *     if (e.cursor.type === 'position') {\n     *         console.log(`Hover over row #${e.cursor.row}.`);\n     *     }\n     * });\n     * ```\n     *\n     * @function #addListener\n     *\n     * @param {Data.DataCursor.TableId} tableId\n     * The ID of the table to listen to.\n     *\n     * @param {Data.DataCursor.State} state\n     * The state on the table to listen to.\n     *\n     * @param {Data.DataCursor.Listener} listener\n     * The listener to register.\n     *\n     * @return {Data.DataCursor}\n     * Returns the DataCursor instance for a call chain.\n     */\n    DataCursor.prototype.addListener = function (tableId, state, listener) {\n        var listenerMap = this.listenerMap[tableId] = (this.listenerMap[tableId] ||\n                {});\n        var listeners = listenerMap[state] = (listenerMap[state] ||\n                []);\n        listeners.push(listener);\n        return this;\n    };\n    /**\n     * @private\n     */\n    DataCursor.prototype.buildEmittingTag = function (e) {\n        return (e.cursor.type === 'position' ?\n            [\n                e.table.id,\n                e.cursor.column,\n                e.cursor.row,\n                e.cursor.state,\n                e.cursor.type\n            ] :\n            [\n                e.table.id,\n                e.cursor.columns,\n                e.cursor.firstRow,\n                e.cursor.lastRow,\n                e.cursor.state,\n                e.cursor.type\n            ]).join('\\0');\n    };\n    /**\n     * This function emits a state cursor related to a table. It will provide\n     * lasting state cursors of the table to listeners.\n     *\n     * @example\n     * ```ts\n     * dataCursor.emit(myTable, {\n     *     type: 'position',\n     *     column: 'city',\n     *     row: 4,\n     *     state: 'hover',\n     * });\n     * ```\n     *\n     * @param {Data.DataTable} table\n     * The related table of the cursor.\n     *\n     * @param {Data.DataCursor.Type} cursor\n     * The state cursor to emit.\n     *\n     * @param {Event} [event]\n     * Optional event information from a related source.\n     *\n     * @param {boolean} [lasting]\n     * Whether this state cursor should be kept until it is cleared with\n     * {@link DataCursor#remitCursor}.\n     *\n     * @return {Data.DataCursor}\n     * Returns the DataCursor instance for a call chain.\n     */\n    DataCursor.prototype.emitCursor = function (table, cursor, event, lasting) {\n        var _a;\n        var tableId = table.id,\n            state = cursor.state,\n            listeners = (this.listenerMap[tableId] &&\n                this.listenerMap[tableId][state]);\n        if (listeners) {\n            var stateMap = this.stateMap[tableId] = ((_a = this.stateMap[tableId]) !== null && _a !== void 0 ? _a : {});\n            var cursors = stateMap[cursor.state] || [];\n            if (lasting) {\n                if (!cursors.length) {\n                    stateMap[cursor.state] = cursors;\n                }\n                if (DataCursor.getIndex(cursor, cursors) === -1) {\n                    cursors.push(cursor);\n                }\n            }\n            var e = {\n                    cursor: cursor,\n                    cursors: cursors,\n                    table: table\n                };\n            if (event) {\n                e.event = event;\n            }\n            var emittingRegister = this.emittingRegister,\n                emittingTag = this.buildEmittingTag(e);\n            if (emittingRegister.indexOf(emittingTag) >= 0) {\n                // Break call stack loops\n                return this;\n            }\n            try {\n                this.emittingRegister.push(emittingTag);\n                for (var i = 0, iEnd = listeners.length; i < iEnd; ++i) {\n                    listeners[i].call(this, e);\n                }\n            }\n            finally {\n                var index = this.emittingRegister.indexOf(emittingTag);\n                if (index >= 0) {\n                    this.emittingRegister.splice(index, 1);\n                }\n            }\n        }\n        return this;\n    };\n    /**\n     * Removes a lasting state cursor.\n     *\n     * @function #remitCursor\n     *\n     * @param {string} tableId\n     * ID of the related cursor table.\n     *\n     * @param {Data.DataCursor.Type} cursor\n     * Copy or reference of the cursor.\n     *\n     * @return {Data.DataCursor}\n     * Returns the DataCursor instance for a call chain.\n     */\n    DataCursor.prototype.remitCursor = function (tableId, cursor) {\n        var cursors = (this.stateMap[tableId] &&\n                this.stateMap[tableId][cursor.state]);\n        if (cursors) {\n            var index = DataCursor.getIndex(cursor,\n                cursors);\n            if (index >= 0) {\n                cursors.splice(index, 1);\n            }\n        }\n        return this;\n    };\n    /**\n     * This function removes a listener.\n     *\n     * @function #addListener\n     *\n     * @param {Data.DataCursor.TableId} tableId\n     * The ID of the table the listener is connected to.\n     *\n     * @param {Data.DataCursor.State} state\n     * The state on the table the listener is listening to.\n     *\n     * @param {Data.DataCursor.Listener} listener\n     * The listener to deregister.\n     *\n     * @return {Data.DataCursor}\n     * Returns the DataCursor instance for a call chain.\n     */\n    DataCursor.prototype.removeListener = function (tableId, state, listener) {\n        var listeners = (this.listenerMap[tableId] &&\n                this.listenerMap[tableId][state]);\n        if (listeners) {\n            var index = listeners.indexOf(listener);\n            if (index >= 0) {\n                listeners.splice(index, 1);\n            }\n        }\n        return this;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Semantic version string of the DataCursor class.\n     * @internal\n     */\n    DataCursor.version = '1.0.0';\n    return DataCursor;\n}());\n/* *\n *\n *  Class Namespace\n *\n * */\n/**\n * @class Data.DataCursor\n */\n(function (DataCursor) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Finds the index of an cursor in an array.\n     * @private\n     */\n    function getIndex(needle, cursors) {\n        if (needle.type === 'position') {\n            for (var cursor = void 0, i = 0, iEnd = cursors.length; i < iEnd; ++i) {\n                cursor = cursors[i];\n                if (cursor.type === 'position' &&\n                    cursor.state === needle.state &&\n                    cursor.column === needle.column &&\n                    cursor.row === needle.row) {\n                    return i;\n                }\n            }\n        }\n        else {\n            var columnNeedle = JSON.stringify(needle.columns);\n            for (var cursor = void 0, i = 0, iEnd = cursors.length; i < iEnd; ++i) {\n                cursor = cursors[i];\n                if (cursor.type === 'range' &&\n                    cursor.state === needle.state &&\n                    cursor.firstRow === needle.firstRow &&\n                    cursor.lastRow === needle.lastRow &&\n                    JSON.stringify(cursor.columns) === columnNeedle) {\n                    return i;\n                }\n            }\n        }\n        return -1;\n    }\n    DataCursor.getIndex = getIndex;\n    /**\n     * Checks whether two cursor share the same properties.\n     * @private\n     */\n    function isEqual(cursorA, cursorB) {\n        if (cursorA.type === 'position' && cursorB.type === 'position') {\n            return (cursorA.column === cursorB.column &&\n                cursorA.row === cursorB.row &&\n                cursorA.state === cursorB.state);\n        }\n        if (cursorA.type === 'range' && cursorB.type === 'range') {\n            return (cursorA.firstRow === cursorB.firstRow &&\n                cursorA.lastRow === cursorB.lastRow &&\n                (JSON.stringify(cursorA.columns) ===\n                    JSON.stringify(cursorB.columns)));\n        }\n        return false;\n    }\n    DataCursor.isEqual = isEqual;\n    /**\n     * Checks whether a cursor is in a range.\n     * @private\n     */\n    function isInRange(needle, range) {\n        if (range.type === 'position') {\n            range = toRange(range);\n        }\n        if (needle.type === 'position') {\n            needle = toRange(needle, range);\n        }\n        var needleColumns = needle.columns;\n        var rangeColumns = range.columns;\n        return (needle.firstRow >= range.firstRow &&\n            needle.lastRow <= range.lastRow &&\n            (!needleColumns ||\n                !rangeColumns ||\n                needleColumns.every(function (column) { return rangeColumns.indexOf(column) >= 0; })));\n    }\n    DataCursor.isInRange = isInRange;\n    /**\n     * @private\n     */\n    function toPositions(cursor) {\n        if (cursor.type === 'position') {\n            return [cursor];\n        }\n        var columns = (cursor.columns || []);\n        var positions = [];\n        var state = cursor.state;\n        for (var row = cursor.firstRow, rowEnd = cursor.lastRow; row < rowEnd; ++row) {\n            if (!columns.length) {\n                positions.push({\n                    type: 'position',\n                    row: row,\n                    state: state\n                });\n                continue;\n            }\n            for (var column = 0, columnEnd = columns.length; column < columnEnd; ++column) {\n                positions.push({\n                    type: 'position',\n                    column: columns[column],\n                    row: row,\n                    state: state\n                });\n            }\n        }\n        return positions;\n    }\n    DataCursor.toPositions = toPositions;\n    /**\n     * @private\n     */\n    function toRange(cursor, defaultRange) {\n        var _a,\n            _b,\n            _c,\n            _d;\n        if (cursor.type === 'range') {\n            return cursor;\n        }\n        var range = {\n                type: 'range',\n                firstRow: ((_b = (_a = cursor.row) !== null && _a !== void 0 ? _a : (defaultRange && defaultRange.firstRow)) !== null && _b !== void 0 ? _b : 0),\n                lastRow: ((_d = (_c = cursor.row) !== null && _c !== void 0 ? _c : (defaultRange && defaultRange.lastRow)) !== null && _d !== void 0 ? _d : Number.MAX_VALUE),\n                state: cursor.state\n            };\n        if (typeof cursor.column !== 'undefined') {\n            range.columns = [cursor.column];\n        }\n        return range;\n    }\n    DataCursor.toRange = toRange;\n})(DataCursor || (DataCursor = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Data_DataCursor = (DataCursor);\n\n;// ./code/es5/es-modules/Data/DataPoolDefaults.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\nvar DataPoolDefaults = {\n    connectors: []\n};\n/* *\n *\n *  Export Defaults\n *\n * */\n/* harmony default export */ var Data_DataPoolDefaults = (DataPoolDefaults);\n\n;// ./code/es5/es-modules/Data/DataPool.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\n\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * Data pool to load connectors on-demand.\n *\n * @class\n * @name Data.DataPool\n *\n * @param {Data.DataPoolOptions} options\n * Pool options with all connectors.\n */\nvar DataPool = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function DataPool(options) {\n        if (options === void 0) { options = Data_DataPoolDefaults; }\n        options.connectors = (options.connectors || []);\n        this.connectors = {};\n        this.options = options;\n        this.waiting = {};\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Emits an event on this data pool to all registered callbacks of the given\n     * event.\n     * @private\n     *\n     * @param {DataTable.Event} e\n     * Event object with event information.\n     */\n    DataPool.prototype.emit = function (e) {\n        highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().fireEvent(this, e.type, e);\n    };\n    /**\n     * Loads the connector.\n     *\n     * @function Data.DataPool#getConnector\n     *\n     * @param {string} connectorId\n     * ID of the connector.\n     *\n     * @return {Promise<Data.DataConnector>}\n     * Returns the connector.\n     */\n    DataPool.prototype.getConnector = function (connectorId) {\n        var _this = this;\n        var connector = this.connectors[connectorId];\n        // Already loaded\n        if (connector) {\n            return Promise.resolve(connector);\n        }\n        var waitingList = this.waiting[connectorId];\n        // Start loading\n        if (!waitingList) {\n            waitingList = this.waiting[connectorId] = [];\n            var connectorOptions = this.getConnectorOptions(connectorId);\n            if (!connectorOptions) {\n                throw new Error(\"Connector '\".concat(connectorId, \"' not found.\"));\n            }\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            this\n                .loadConnector(connectorOptions)\n                .then(function (connector) {\n                delete _this.waiting[connectorId];\n                for (var i = 0, iEnd = waitingList.length; i < iEnd; ++i) {\n                    waitingList[i][0](connector);\n                }\n            })['catch'](function (error) {\n                delete _this.waiting[connectorId];\n                for (var i = 0, iEnd = waitingList.length; i < iEnd; ++i) {\n                    waitingList[i][1](error);\n                }\n            });\n        }\n        // Add request to waiting list\n        return new Promise(function (resolve, reject) {\n            waitingList.push([resolve, reject]);\n        });\n    };\n    /**\n     * Returns the IDs of all connectors.\n     *\n     * @private\n     *\n     * @return {Array<string>}\n     * Names of all connectors.\n     */\n    DataPool.prototype.getConnectorIds = function () {\n        var connectors = this.options.connectors,\n            connectorIds = [];\n        for (var i = 0, iEnd = connectors.length; i < iEnd; ++i) {\n            connectorIds.push(connectors[i].id);\n        }\n        return connectorIds;\n    };\n    /**\n     * Loads the options of the connector.\n     *\n     * @private\n     *\n     * @param {string} connectorId\n     * ID of the connector.\n     *\n     * @return {DataPoolConnectorOptions|undefined}\n     * Returns the options of the connector, or `undefined` if not found.\n     */\n    DataPool.prototype.getConnectorOptions = function (connectorId) {\n        var connectors = this.options.connectors;\n        for (var i = 0, iEnd = connectors.length; i < iEnd; ++i) {\n            if (connectors[i].id === connectorId) {\n                return connectors[i];\n            }\n        }\n    };\n    /**\n     * Loads the connector table.\n     *\n     * @function Data.DataPool#getConnectorTable\n     *\n     * @param {string} connectorId\n     * ID of the connector.\n     *\n     * @return {Promise<Data.DataTable>}\n     * Returns the connector table.\n     */\n    DataPool.prototype.getConnectorTable = function (connectorId) {\n        return this\n            .getConnector(connectorId)\n            .then(function (connector) { return connector.table; });\n    };\n    /**\n     * Tests whether the connector has never been requested.\n     *\n     * @param {string} connectorId\n     * Name of the connector.\n     *\n     * @return {boolean}\n     * Returns `true`, if the connector has never been requested, otherwise\n     * `false`.\n     */\n    DataPool.prototype.isNewConnector = function (connectorId) {\n        return !this.connectors[connectorId];\n    };\n    /**\n     * Creates and loads the connector.\n     *\n     * @private\n     *\n     * @param {Data.DataPoolConnectorOptions} options\n     * Options of connector.\n     *\n     * @return {Promise<Data.DataConnector>}\n     * Returns the connector.\n     */\n    DataPool.prototype.loadConnector = function (options) {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            _this.emit({\n                type: 'load',\n                options: options\n            });\n            var ConnectorClass = Connectors_DataConnector.types[options.type];\n            if (!ConnectorClass) {\n                throw new Error(\"Connector type not found. (\".concat(options.type, \")\"));\n            }\n            var connector = new ConnectorClass(options.options);\n            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n            connector\n                .load()\n                .then(function (connector) {\n                _this.connectors[options.id] = connector;\n                _this.emit({\n                    type: 'afterLoad',\n                    options: options\n                });\n                resolve(connector);\n            })['catch'](reject);\n        });\n    };\n    /**\n     * Registers a callback for a specific event.\n     *\n     * @function Highcharts.DataPool#on\n     *\n     * @param {string} type\n     * Event type as a string.\n     *\n     * @param {Highcharts.EventCallbackFunction<Highcharts.DataPool>} callback\n     * Function to register for an event callback.\n     *\n     * @return {Function}\n     * Function to unregister callback from the event.\n     */\n    DataPool.prototype.on = function (type, callback) {\n        return highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().addEvent(this, type, callback);\n    };\n    /**\n     * Sets connector options under the specified `options.id`.\n     *\n     * @param {Data.DataPoolConnectorOptions} options\n     * Connector options to set.\n     */\n    DataPool.prototype.setConnectorOptions = function (options) {\n        var connectors = this.options.connectors,\n            instances = this.connectors;\n        this.emit({\n            type: 'setConnectorOptions',\n            options: options\n        });\n        for (var i = 0, iEnd = connectors.length; i < iEnd; ++i) {\n            if (connectors[i].id === options.id) {\n                connectors.splice(i, 1);\n                break;\n            }\n        }\n        if (instances[options.id]) {\n            instances[options.id].stopPolling();\n            delete instances[options.id];\n        }\n        connectors.push(options);\n        this.emit({\n            type: 'afterSetConnectorOptions',\n            options: options\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Semantic version string of the DataPool class.\n     * @internal\n     */\n    DataPool.version = '1.0.0';\n    return DataPool;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Data_DataPool = (DataPool);\n\n;// ./code/es5/es-modules/Data/Formula/FormulaParser.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n/**\n * @private\n */\nvar booleanRegExp = /^(?:FALSE|TRUE)/;\n/**\n * `.`-separated decimal.\n * @private\n */\nvar decimal1RegExp = /^[+\\-]?\\d+(?:\\.\\d+)?(?:e[+\\-]\\d+)?/;\n/**\n * `,`-separated decimal.\n * @private\n */\nvar decimal2RegExp = /^[+\\-]?\\d+(?:,\\d+)?(?:e[+\\-]\\d+)?/;\n/**\n * - Group 1: Function name\n * @private\n */\nvar functionRegExp = /^([A-Z][A-Z\\d\\.]*)\\(/;\n/**\n * @private\n */\nvar operatorRegExp = /^(?:[+\\-*\\/^<=>]|<=|=>)/;\n/**\n * - Group 1: Start column\n * - Group 2: Start row\n * - Group 3: End column\n * - Group 4: End row\n * @private\n */\nvar rangeA1RegExp = /^(\\$?[A-Z]+)(\\$?\\d+)\\:(\\$?[A-Z]+)(\\$?\\d+)/;\n/**\n * - Group 1: Start row\n * - Group 2: Start column\n * - Group 3: End row\n * - Group 4: End column\n * @private\n */\nvar rangeR1C1RegExp = /^R(\\d*|\\[\\d+\\])C(\\d*|\\[\\d+\\])\\:R(\\d*|\\[\\d+\\])C(\\d*|\\[\\d+\\])/;\n/**\n * - Group 1: Column\n * - Group 2: Row\n * @private\n */\nvar referenceA1RegExp = /^(\\$?[A-Z]+)(\\$?\\d+)(?![\\:C])/;\n/**\n * - Group 1: Row\n * - Group 2: Column\n * @private\n */\nvar referenceR1C1RegExp = /^R(\\d*|\\[\\d+\\])C(\\d*|\\[\\d+\\])(?!\\:)/;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Extracts the inner string of the most outer parantheses.\n *\n * @private\n *\n * @param {string} text\n * Text string to extract from.\n *\n * @return {string}\n * Extracted parantheses. If not found an exception will be thrown.\n */\nfunction extractParantheses(text) {\n    var parantheseLevel = 0;\n    for (var i = 0, iEnd = text.length, char = void 0, parantheseStart = 1; i < iEnd; ++i) {\n        char = text[i];\n        if (char === '(') {\n            if (!parantheseLevel) {\n                parantheseStart = i + 1;\n            }\n            ++parantheseLevel;\n            continue;\n        }\n        if (char === ')') {\n            --parantheseLevel;\n            if (!parantheseLevel) {\n                return text.substring(parantheseStart, i);\n            }\n        }\n    }\n    if (parantheseLevel > 0) {\n        var error = new Error('Incomplete parantheses.');\n        error.name = 'FormulaParseError';\n        throw error;\n    }\n    return '';\n}\n/**\n * Extracts the inner string value.\n *\n * @private\n *\n * @param {string} text\n * Text string to extract from.\n *\n * @return {string}\n * Extracted string. If not found an exception will be thrown.\n */\nfunction extractString(text) {\n    var start = -1;\n    for (var i = 0, iEnd = text.length, char = void 0, escaping = false; i < iEnd; ++i) {\n        char = text[i];\n        if (char === '\\\\') {\n            escaping = !escaping;\n            continue;\n        }\n        if (escaping) {\n            escaping = false;\n            continue;\n        }\n        if (char === '\"') {\n            if (start < 0) {\n                start = i;\n            }\n            else {\n                return text.substring(start + 1, i); // `ì` is excluding\n            }\n        }\n    }\n    var error = new Error('Incomplete string.');\n    error.name = 'FormulaParseError';\n    throw error;\n}\n/**\n * Parses an argument string. Formula arrays with a single term will be\n * simplified to the term.\n *\n * @private\n *\n * @param {string} text\n * Argument string to parse.\n *\n * @param {boolean} alternativeSeparators\n * Whether to expect `;` as argument separator and `,` as decimal separator.\n *\n * @return {Formula|Function|Range|Reference|Value}\n * The recognized term structure.\n */\nfunction parseArgument(text, alternativeSeparators) {\n    var match;\n    // Check for a R1C1:R1C1 range notation\n    match = text.match(rangeR1C1RegExp);\n    if (match) {\n        var beginColumnRelative = (match[2] === '' || match[2][0] === '[');\n        var beginRowRelative = (match[1] === '' || match[1][0] === '[');\n        var endColumnRelative = (match[4] === '' || match[4][0] === '[');\n        var endRowRelative = (match[3] === '' || match[3][0] === '[');\n        var range = {\n                type: 'range',\n                beginColumn: (beginColumnRelative ?\n                    parseInt(match[2].substring(1, -1) || '0', 10) :\n                    parseInt(match[2], 10) - 1),\n                beginRow: (beginRowRelative ?\n                    parseInt(match[1].substring(1, -1) || '0', 10) :\n                    parseInt(match[1], 10) - 1),\n                endColumn: (endColumnRelative ?\n                    parseInt(match[4].substring(1, -1) || '0', 10) :\n                    parseInt(match[4], 10) - 1),\n                endRow: (endRowRelative ?\n                    parseInt(match[3].substring(1, -1) || '0', 10) :\n                    parseInt(match[3], 10) - 1)\n            };\n        if (beginColumnRelative) {\n            range.beginColumnRelative = true;\n        }\n        if (beginRowRelative) {\n            range.beginRowRelative = true;\n        }\n        if (endColumnRelative) {\n            range.endColumnRelative = true;\n        }\n        if (endRowRelative) {\n            range.endRowRelative = true;\n        }\n        return range;\n    }\n    // Check for a A1:A1 range notation\n    match = text.match(rangeA1RegExp);\n    if (match) {\n        var beginColumnRelative = match[1][0] !== '$';\n        var beginRowRelative = match[2][0] !== '$';\n        var endColumnRelative = match[3][0] !== '$';\n        var endRowRelative = match[4][0] !== '$';\n        var range = {\n                type: 'range',\n                beginColumn: parseReferenceColumn(beginColumnRelative ?\n                    match[1] :\n                    match[1].substring(1)) - 1,\n                beginRow: parseInt(beginRowRelative ?\n                    match[2] :\n                    match[2].substring(1), 10) - 1,\n                endColumn: parseReferenceColumn(endColumnRelative ?\n                    match[3] :\n                    match[3].substring(1)) - 1,\n                endRow: parseInt(endRowRelative ?\n                    match[4] :\n                    match[4].substring(1), 10) - 1\n            };\n        if (beginColumnRelative) {\n            range.beginColumnRelative = true;\n        }\n        if (beginRowRelative) {\n            range.beginRowRelative = true;\n        }\n        if (endColumnRelative) {\n            range.endColumnRelative = true;\n        }\n        if (endRowRelative) {\n            range.endRowRelative = true;\n        }\n        return range;\n    }\n    // Fallback to formula processing for other pattern types\n    var formula = parseFormula(text,\n        alternativeSeparators);\n    return (formula.length === 1 && typeof formula[0] !== 'string' ?\n        formula[0] :\n        formula);\n}\n/**\n * Parse arguments string inside function parantheses.\n *\n * @private\n *\n * @param {string} text\n * Parantheses string of the function.\n *\n * @param {boolean} alternativeSeparators\n * Whether to expect `;` as argument separator and `,` as decimal separator.\n *\n * @return {Highcharts.FormulaArguments}\n * Parsed arguments array.\n */\nfunction parseArguments(text, alternativeSeparators) {\n    var args = [], argumentsSeparator = (alternativeSeparators ? ';' : ',');\n    var parantheseLevel = 0,\n        term = '';\n    for (var i = 0, iEnd = text.length, char = void 0; i < iEnd; ++i) {\n        char = text[i];\n        // Check for separator\n        if (char === argumentsSeparator &&\n            !parantheseLevel &&\n            term) {\n            args.push(parseArgument(term, alternativeSeparators));\n            term = '';\n            // Check for a quoted string before skip logic\n        }\n        else if (char === '\"' &&\n            !parantheseLevel &&\n            !term) {\n            var string = extractString(text.substring(i));\n            args.push(string);\n            i += string.length + 1; // Only +1 to cover ++i in for-loop\n            // Skip space and check paranthesis nesting\n        }\n        else if (char !== ' ') {\n            term += char;\n            if (char === '(') {\n                ++parantheseLevel;\n            }\n            else if (char === ')') {\n                --parantheseLevel;\n            }\n        }\n    }\n    // Look for left-overs from last argument\n    if (!parantheseLevel && term) {\n        args.push(parseArgument(term, alternativeSeparators));\n    }\n    return args;\n}\n/**\n * Converts a spreadsheet formula string into a formula array. Throws a\n * `FormulaParserError` when the string can not be parsed.\n *\n * @private\n * @function Formula.parseFormula\n *\n * @param {string} text\n * Spreadsheet formula string, without the leading `=`.\n *\n * @param {boolean} alternativeSeparators\n * * `false` to expect `,` between arguments and `.` in decimals.\n * * `true` to expect `;` between arguments and `,` in decimals.\n *\n * @return {Formula.Formula}\n * Formula array representing the string.\n */\nfunction parseFormula(text, alternativeSeparators) {\n    var decimalRegExp = (alternativeSeparators ?\n            decimal2RegExp :\n            decimal1RegExp),\n        formula = [];\n    var match,\n        next = (text[0] === '=' ? text.substring(1) : text).trim();\n    while (next) {\n        // Check for an R1C1 reference notation\n        match = next.match(referenceR1C1RegExp);\n        if (match) {\n            var columnRelative = (match[2] === '' || match[2][0] === '[');\n            var rowRelative = (match[1] === '' || match[1][0] === '[');\n            var reference = {\n                    type: 'reference',\n                    column: (columnRelative ?\n                        parseInt(match[2].substring(1, -1) || '0', 10) :\n                        parseInt(match[2], 10) - 1),\n                    row: (rowRelative ?\n                        parseInt(match[1].substring(1, -1) || '0', 10) :\n                        parseInt(match[1], 10) - 1)\n                };\n            if (columnRelative) {\n                reference.columnRelative = true;\n            }\n            if (rowRelative) {\n                reference.rowRelative = true;\n            }\n            formula.push(reference);\n            next = next.substring(match[0].length).trim();\n            continue;\n        }\n        // Check for an A1 reference notation\n        match = next.match(referenceA1RegExp);\n        if (match) {\n            var columnRelative = match[1][0] !== '$';\n            var rowRelative = match[2][0] !== '$';\n            var reference = {\n                    type: 'reference',\n                    column: parseReferenceColumn(columnRelative ?\n                        match[1] :\n                        match[1].substring(1)) - 1,\n                    row: parseInt(rowRelative ?\n                        match[2] :\n                        match[2].substring(1), 10) - 1\n                };\n            if (columnRelative) {\n                reference.columnRelative = true;\n            }\n            if (rowRelative) {\n                reference.rowRelative = true;\n            }\n            formula.push(reference);\n            next = next.substring(match[0].length).trim();\n            continue;\n        }\n        // Check for a formula operator\n        match = next.match(operatorRegExp);\n        if (match) {\n            formula.push(match[0]);\n            next = next.substring(match[0].length).trim();\n            continue;\n        }\n        // Check for a boolean value\n        match = next.match(booleanRegExp);\n        if (match) {\n            formula.push(match[0] === 'TRUE');\n            next = next.substring(match[0].length).trim();\n            continue;\n        }\n        // Check for a number value\n        match = next.match(decimalRegExp);\n        if (match) {\n            formula.push(parseFloat(match[0]));\n            next = next.substring(match[0].length).trim();\n            continue;\n        }\n        // Check for a quoted string\n        if (next[0] === '\"') {\n            var string = extractString(next);\n            formula.push(string.substring(1, -1));\n            next = next.substring(string.length + 2).trim();\n            continue;\n        }\n        // Check for a function\n        match = next.match(functionRegExp);\n        if (match) {\n            next = next.substring(match[1].length).trim();\n            var parantheses = extractParantheses(next);\n            formula.push({\n                type: 'function',\n                name: match[1],\n                args: parseArguments(parantheses, alternativeSeparators)\n            });\n            next = next.substring(parantheses.length + 2).trim();\n            continue;\n        }\n        // Check for a formula in parantheses\n        if (next[0] === '(') {\n            var paranteses = extractParantheses(next);\n            if (paranteses) {\n                formula\n                    .push(parseFormula(paranteses, alternativeSeparators));\n                next = next.substring(paranteses.length + 2).trim();\n                continue;\n            }\n        }\n        // Something is not right\n        var position = text.length - next.length, error = new Error('Unexpected character `' +\n                text.substring(position, position + 1) +\n                '` at position ' + (position + 1) +\n                '. (`...' + text.substring(position - 5, position + 6) + '...`)');\n        error.name = 'FormulaParseError';\n        throw error;\n    }\n    return formula;\n}\n/**\n * Converts a reference column `A` of `A1` into a number. Supports endless sizes\n * `ZZZ...`, just limited by integer precision.\n *\n * @private\n *\n * @param {string} text\n * Column string to convert.\n *\n * @return {number}\n * Converted column index.\n */\nfunction parseReferenceColumn(text) {\n    var column = 0;\n    for (var i = 0, iEnd = text.length, code = void 0, factor = text.length - 1; i < iEnd; ++i) {\n        code = text.charCodeAt(i);\n        if (code >= 65 && code <= 90) {\n            column += (code - 64) * Math.pow(26, factor);\n        }\n        --factor;\n    }\n    return column;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar FormulaParser = {\n    parseFormula: parseFormula\n};\n/* harmony default export */ var Formula_FormulaParser = (FormulaParser);\n\n;// ./code/es5/es-modules/Data/Formula/FormulaTypes.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Array of all possible operators.\n * @private\n */\nvar operators = ['+', '-', '*', '/', '^', '=', '<', '<=', '>', '>='];\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Tests an item for a Formula array.\n *\n * @private\n *\n * @param {Highcharts.FormulaItem} item\n * Item to test.\n *\n * @return {boolean}\n * `true`, if the item is a formula (or argument) array.\n */\nfunction isFormula(item) {\n    return item instanceof Array;\n}\n/**\n * Tests an item for a Function structure.\n *\n * @private\n *\n * @param {Highcharts.FormulaItem} item\n * Item to test.\n *\n * @return {boolean}\n * `true`, if the item is a formula function.\n */\nfunction isFunction(item) {\n    return (typeof item === 'object' &&\n        !(item instanceof Array) &&\n        item.type === 'function');\n}\n/**\n * Tests an item for an Operator string.\n *\n * @private\n *\n * @param {Highcharts.FormulaItem} item\n * Item to test.\n *\n * @return {boolean}\n * `true`, if the item is an operator string.\n */\nfunction isOperator(item) {\n    return (typeof item === 'string' &&\n        operators.indexOf(item) >= 0);\n}\n/**\n * Tests an item for a Range structure.\n *\n * @private\n *\n * @param {Highcharts.FormulaItem} item\n * Item to test.\n *\n * @return {boolean}\n * `true`, if the item is a range.\n */\nfunction isRange(item) {\n    return (typeof item === 'object' &&\n        !(item instanceof Array) &&\n        item.type === 'range');\n}\n/**\n * Tests an item for a Reference structure.\n *\n * @private\n *\n * @param {Highcharts.FormulaItem} item\n * Item to test.\n *\n * @return {boolean}\n * `true`, if the item is a reference.\n */\nfunction isReference(item) {\n    return (typeof item === 'object' &&\n        !(item instanceof Array) &&\n        item.type === 'reference');\n}\n/**\n * Tests an item for a Value structure.\n *\n * @private\n *\n * @param {Highcharts.FormulaItem|null|undefined} item\n * Item to test.\n *\n * @return {boolean}\n * `true`, if the item is a value.\n */\nfunction isValue(item) {\n    return (typeof item === 'boolean' ||\n        typeof item === 'number' ||\n        typeof item === 'string');\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar MathFormula = {\n    isFormula: isFormula,\n    isFunction: isFunction,\n    isOperator: isOperator,\n    isRange: isRange,\n    isReference: isReference,\n    isValue: isValue\n};\n/* harmony default export */ var FormulaTypes = (MathFormula);\n\n;// ./code/es5/es-modules/Data/Formula/FormulaProcessor.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar FormulaProcessor_isFormula = FormulaTypes.isFormula, FormulaProcessor_isFunction = FormulaTypes.isFunction, FormulaProcessor_isOperator = FormulaTypes.isOperator, FormulaProcessor_isRange = FormulaTypes.isRange, FormulaProcessor_isReference = FormulaTypes.isReference, FormulaProcessor_isValue = FormulaTypes.isValue;\n/* *\n *\n *  Constants\n *\n * */\nvar asLogicalStringRegExp = / */;\nvar MAX_FALSE = Number.MAX_VALUE / 1.000000000001;\nvar MAX_STRING = Number.MAX_VALUE / 1.000000000002;\nvar MAX_TRUE = Number.MAX_VALUE;\nvar operatorPriority = {\n    '^': 3,\n    '*': 2,\n    '/': 2,\n    '+': 1,\n    '-': 1,\n    '=': 0,\n    '<': 0,\n    '<=': 0,\n    '>': 0,\n    '>=': 0\n};\nvar processorFunctions = {};\nvar processorFunctionNameRegExp = /^[A-Z][A-Z\\.]*$/;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Converts non-number types to logical numbers.\n *\n * @param {Highcharts.FormulaValue} value\n * Value to convert.\n *\n * @return {number}\n * Logical number value. `NaN` if not convertable.\n */\nfunction asLogicalNumber(value) {\n    switch (typeof value) {\n        case 'boolean':\n            return value ? MAX_TRUE : MAX_FALSE;\n        case 'string':\n            return MAX_STRING;\n        case 'number':\n            return value;\n        default:\n            return NaN;\n    }\n}\n/**\n * Converts strings to logical strings, while other types get passed through. In\n * logical strings the space character is the lowest value and letters are case\n * insensitive.\n *\n * @param {Highcharts.FormulaValue} value\n * Value to convert.\n *\n * @return {Highcharts.FormulaValue}\n * Logical string value or passed through value.\n */\nfunction asLogicalString(value) {\n    if (typeof value === 'string') {\n        return value.toLowerCase().replace(asLogicalStringRegExp, '\\0');\n    }\n    return value;\n}\n/**\n * Converts non-number types to a logic number.\n *\n * @param {Highcharts.FormulaValue} value\n * Value to convert.\n *\n * @return {number}\n * Number value. `NaN` if not convertable.\n */\nfunction asNumber(value) {\n    switch (typeof value) {\n        case 'boolean':\n            return value ? 1 : 0;\n        case 'string':\n            return parseFloat(value.replace(',', '.'));\n        case 'number':\n            return value;\n        default:\n            return NaN;\n    }\n}\n/**\n * Process a basic operation of two given values.\n *\n * @private\n *\n * @param {Highcharts.FormulaOperator} operator\n * Operator between values.\n *\n * @param {Highcharts.FormulaValue} x\n * First value for operation.\n *\n * @param {Highcharts.FormulaValue} y\n * Second value for operation.\n *\n * @return {Highcharts.FormulaValue}\n * Operation result. `NaN` if operation is not support.\n */\nfunction basicOperation(operator, x, y) {\n    switch (operator) {\n        case '=':\n            return asLogicalString(x) === asLogicalString(y);\n        case '<':\n            if (typeof x === typeof y) {\n                return asLogicalString(x) < asLogicalString(y);\n            }\n            return asLogicalNumber(x) < asLogicalNumber(y);\n        case '<=':\n            if (typeof x === typeof y) {\n                return asLogicalString(x) <= asLogicalString(y);\n            }\n            return asLogicalNumber(x) <= asLogicalNumber(y);\n        case '>':\n            if (typeof x === typeof y) {\n                return asLogicalString(x) > asLogicalString(y);\n            }\n            return asLogicalNumber(x) > asLogicalNumber(y);\n        case '>=':\n            if (typeof x === typeof y) {\n                return asLogicalString(x) >= asLogicalString(y);\n            }\n            return asLogicalNumber(x) >= asLogicalNumber(y);\n    }\n    x = asNumber(x);\n    y = asNumber(y);\n    var result;\n    switch (operator) {\n        case '+':\n            result = x + y;\n            break;\n        case '-':\n            result = x - y;\n            break;\n        case '*':\n            result = x * y;\n            break;\n        case '/':\n            result = x / y;\n            break;\n        case '^':\n            result = Math.pow(x, y);\n            break;\n        default:\n            return NaN;\n    }\n    // Limit decimal to 9 digits\n    return (result % 1 ?\n        Math.round(result * 1000000000) / 1000000000 :\n        result);\n}\n/**\n * Converts an argument to Value and in case of a range to an array of Values.\n *\n * @function Highcharts.Formula.getArgumentValue\n *\n * @param {Highcharts.FormulaRange|Highcharts.FormulaTerm} arg\n * Formula range or term to convert.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {Highcharts.FormulaValue|Array<Highcharts.FormulaValue>}\n * Converted value.\n */\nfunction getArgumentValue(arg, table) {\n    // Add value\n    if (FormulaProcessor_isValue(arg)) {\n        return arg;\n    }\n    // Add values of a range\n    if (FormulaProcessor_isRange(arg)) {\n        return (table && getRangeValues(arg, table) || []);\n    }\n    // Add values of a function\n    if (FormulaProcessor_isFunction(arg)) {\n        return processFunction(arg, table);\n    }\n    // Process functions, operations, references with formula processor\n    return processFormula((FormulaProcessor_isFormula(arg) ? arg : [arg]), table);\n}\n/**\n * Converts all arguments to Values and in case of ranges to arrays of Values.\n *\n * @function Highcharts.Formula.getArgumentsValues\n *\n * @param {Highcharts.FormulaArguments} args\n * Formula arguments to convert.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {Array<(Highcharts.FormulaValue|Array<Highcharts.FormulaValue>)>}\n * Converted values.\n */\nfunction getArgumentsValues(args, table) {\n    var values = [];\n    for (var i = 0, iEnd = args.length; i < iEnd; ++i) {\n        values.push(getArgumentValue(args[i], table));\n    }\n    return values;\n}\n/**\n * Extracts cell values from a table for a given range.\n *\n * @function Highcharts.Formula.getRangeValues\n *\n * @param {Highcharts.FormulaRange} range\n * Formula range to use.\n *\n * @param {Highcharts.DataTable} table\n * Table to extract from.\n *\n * @return {Array<Highcharts.FormulaValue>}\n * Extracted values.\n */\nfunction getRangeValues(range, table) {\n    var columnNames = table\n            .getColumnNames()\n            .slice(range.beginColumn,\n        range.endColumn + 1),\n        values = [];\n    for (var i = 0, iEnd = columnNames.length, cell = void 0; i < iEnd; ++i) {\n        var cells = table.getColumn(columnNames[i],\n            true) || [];\n        for (var j = range.beginRow, jEnd = range.endRow + 1; j < jEnd; ++j) {\n            cell = cells[j];\n            if (typeof cell === 'string' &&\n                cell[0] === '=' &&\n                table !== table.modified) {\n                // Look in the modified table for formula result\n                cell = table.modified.getCell(columnNames[i], j);\n            }\n            values.push(FormulaProcessor_isValue(cell) ? cell : NaN);\n        }\n    }\n    return values;\n}\n/**\n * Extracts the cell value from a table for a given reference.\n *\n * @private\n *\n * @param {Highcharts.FormulaReference} reference\n * Formula reference to use.\n *\n * @param {Highcharts.DataTable} table\n * Table to extract from.\n *\n * @return {Highcharts.FormulaValue}\n * Extracted value. 'undefined' might also indicate that the cell was not found.\n */\nfunction getReferenceValue(reference, table) {\n    var columnName = table.getColumnNames()[reference.column];\n    if (columnName) {\n        var cell = table.getCell(columnName,\n            reference.row);\n        if (typeof cell === 'string' &&\n            cell[0] === '=' &&\n            table !== table.modified) {\n            // Look in the modified table for formula result\n            var result = table.modified.getCell(columnName,\n                reference.row);\n            return FormulaProcessor_isValue(result) ? result : NaN;\n        }\n        return FormulaProcessor_isValue(cell) ? cell : NaN;\n    }\n    return NaN;\n}\n/**\n * Processes a formula array on the given table. If the formula does not contain\n * references or ranges, then no table has to be provided.\n *\n * @private\n * @function Highcharts.processFormula\n *\n * @param {Highcharts.Formula} formula\n * Formula array to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {Highcharts.FormulaValue}\n * Result value of the process. `NaN` indicates an error.\n */\nfunction processFormula(formula, table) {\n    var x;\n    for (var i = 0, iEnd = formula.length, item = void 0, operator = void 0, result = void 0, y = void 0; i < iEnd; ++i) {\n        item = formula[i];\n        // Remember operator for operation on next item\n        if (FormulaProcessor_isOperator(item)) {\n            operator = item;\n            continue;\n        }\n        // Next item is a value\n        if (FormulaProcessor_isValue(item)) {\n            y = item;\n            // Next item is a formula and needs to get processed first\n        }\n        else if (FormulaProcessor_isFormula(item)) {\n            y = processFormula(formula, table);\n            // Next item is a function call and needs to get processed first\n        }\n        else if (FormulaProcessor_isFunction(item)) {\n            result = processFunction(item, table);\n            y = (FormulaProcessor_isValue(result) ? result : NaN); // Arrays are not allowed here\n            // Next item is a reference and needs to get resolved\n        }\n        else if (FormulaProcessor_isReference(item)) {\n            y = (table && getReferenceValue(item, table));\n        }\n        // If we have a next value, lets do the operation\n        if (typeof y !== 'undefined') {\n            // Next value is our first value\n            if (typeof x === 'undefined') {\n                if (operator) {\n                    x = basicOperation(operator, 0, y);\n                }\n                else {\n                    x = y;\n                }\n                // Fail fast if no operator available\n            }\n            else if (!operator) {\n                return NaN;\n                // Regular next value\n            }\n            else {\n                var operator2 = formula[i + 1];\n                if (FormulaProcessor_isOperator(operator2) &&\n                    operatorPriority[operator2] > operatorPriority[operator]) {\n                    y = basicOperation(operator2, y, processFormula(formula.slice(i + 2)));\n                    i = iEnd;\n                }\n                x = basicOperation(operator, x, y);\n            }\n            operator = void 0;\n            y = void 0;\n        }\n    }\n    return FormulaProcessor_isValue(x) ? x : NaN;\n}\n/**\n * Process a function on the given table. If the arguments do not contain\n * references or ranges, then no table has to be provided.\n *\n * @private\n *\n * @param {Highcharts.FormulaFunction} formulaFunction\n * Formula function to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @param {Highcharts.FormulaReference} [reference]\n * Table cell reference to use for relative references and ranges.\n *\n * @return {Highcharts.FormulaValue|Array<Highcharts.FormulaValue>}\n * Result value (or values) of the process. `NaN` indicates an error.\n */\nfunction processFunction(formulaFunction, table, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nreference // @todo\n) {\n    var processor = processorFunctions[formulaFunction.name];\n    if (processor) {\n        try {\n            return processor(formulaFunction.args, table);\n        }\n        catch (_a) {\n            return NaN;\n        }\n    }\n    var error = new Error(\"Function \\\"\".concat(formulaFunction.name, \"\\\" not found.\"));\n    error.name = 'FormulaProcessError';\n    throw error;\n}\n/**\n * Registers a function for the FormulaProcessor.\n *\n * @param {string} name\n * Name of the function in spreadsheets notation with upper case.\n *\n * @param {Highcharts.FormulaFunction} processorFunction\n * ProcessorFunction for the FormulaProcessor. This is an object so that it\n * can take additional parameter for future validation routines.\n *\n * @return {boolean}\n * Return true, if the ProcessorFunction has been registered.\n */\nfunction registerProcessorFunction(name, processorFunction) {\n    return (processorFunctionNameRegExp.test(name) &&\n        !processorFunctions[name] &&\n        !!(processorFunctions[name] = processorFunction));\n}\n/**\n * Translates relative references and ranges in-place.\n *\n * @param {Highcharts.Formula} formula\n * Formula to translate references and ranges in.\n *\n * @param {number} [columnDelta=0]\n * Column delta to translate to. Negative translate back.\n *\n * @param {number} [rowDelta=0]\n * Row delta to translate to. Negative numbers translate back.\n *\n * @return {Highcharts.Formula}\n * Formula with translated reference and ranges. This formula is equal to the\n * first argument.\n */\nfunction translateReferences(formula, columnDelta, rowDelta) {\n    if (columnDelta === void 0) { columnDelta = 0; }\n    if (rowDelta === void 0) { rowDelta = 0; }\n    for (var i = 0, iEnd = formula.length, item = void 0; i < iEnd; ++i) {\n        item = formula[i];\n        if (item instanceof Array) {\n            translateReferences(item, columnDelta, rowDelta);\n        }\n        else if (FormulaProcessor_isFunction(item)) {\n            translateReferences(item.args, columnDelta, rowDelta);\n        }\n        else if (FormulaProcessor_isRange(item)) {\n            if (item.beginColumnRelative) {\n                item.beginColumn += columnDelta;\n            }\n            if (item.beginRowRelative) {\n                item.beginRow += rowDelta;\n            }\n            if (item.endColumnRelative) {\n                item.endColumn += columnDelta;\n            }\n            if (item.endRowRelative) {\n                item.endRow += rowDelta;\n            }\n        }\n        else if (FormulaProcessor_isReference(item)) {\n            if (item.columnRelative) {\n                item.column += columnDelta;\n            }\n            if (item.rowRelative) {\n                item.row += rowDelta;\n            }\n        }\n    }\n    return formula;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar FormulaProcessor = {\n    asNumber: asNumber,\n    getArgumentValue: getArgumentValue,\n    getArgumentsValues: getArgumentsValues,\n    getRangeValues: getRangeValues,\n    getReferenceValue: getReferenceValue,\n    processFormula: processFormula,\n    processorFunctions: processorFunctions,\n    registerProcessorFunction: registerProcessorFunction,\n    translateReferences: translateReferences\n};\n/* harmony default export */ var Formula_FormulaProcessor = (FormulaProcessor);\n\n;// ./code/es5/es-modules/Data/Formula/Functions/ABS.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar ABS_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `ABS(value)` implementation. Returns positive numbers.\n *\n * @private\n * @function Formula.processorFunctions.AND\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {Array<number>}\n * Result value of the process.\n */\nfunction ABS(args, table) {\n    var value = ABS_getArgumentValue(args[0],\n        table);\n    switch (typeof value) {\n        case 'number':\n            return Math.abs(value);\n        case 'object': {\n            var values = [];\n            for (var i = 0, iEnd = value.length, value2 = void 0; i < iEnd; ++i) {\n                value2 = value[i];\n                if (typeof value2 !== 'number') {\n                    return NaN;\n                }\n                values.push(Math.abs(value2));\n            }\n            return values;\n        }\n        default:\n            return NaN;\n    }\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('ABS', ABS);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_ABS = ((/* unused pure expression or super */ null && (ABS)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/AND.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar AND_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `AND(...tests)` implementation. Returns `TRUE`, if all test\n * results are not `0` or `FALSE`.\n *\n * @private\n * @function Formula.processorFunctions.AND\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {boolean}\n * Result value of the process.\n */\nfunction AND(args, table) {\n    for (var i = 0, iEnd = args.length, value = void 0; i < iEnd; ++i) {\n        value = AND_getArgumentValue(args[i], table);\n        if (!value ||\n            (typeof value === 'object' &&\n                !AND(value, table))) {\n            return false;\n        }\n    }\n    return true;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('AND', AND);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_AND = ((/* unused pure expression or super */ null && (AND)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/AVERAGE.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar AVERAGE_getArgumentsValues = Formula_FormulaProcessor.getArgumentsValues;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `AVERAGE(...values)` implementation. Calculates the average\n * of the given values that are numbers.\n *\n * @private\n * @function Formula.processorFunctions.AVERAGE\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction AVERAGE(args, table) {\n    var values = AVERAGE_getArgumentsValues(args,\n        table);\n    var count = 0,\n        result = 0;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (!isNaN(value)) {\n                    ++count;\n                    result += value;\n                }\n                break;\n            case 'object':\n                for (var j = 0, jEnd = value.length, value2 = void 0; j < jEnd; ++j) {\n                    value2 = value[j];\n                    if (typeof value2 === 'number' &&\n                        !isNaN(value2)) {\n                        ++count;\n                        result += value2;\n                    }\n                }\n                break;\n        }\n    }\n    return (count ? (result / count) : 0);\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('AVERAGE', AVERAGE);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_AVERAGE = ((/* unused pure expression or super */ null && (AVERAGE)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/AVERAGEA.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar AVERAGEA_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `AVERAGEA(...values)` implementation. Calculates the\n * average of the given values. Strings and FALSE are calculated as 0.\n *\n * @private\n * @function Formula.processorFunctions.AVERAGEA\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction AVERAGEA(args, table) {\n    var count = 0,\n        result = 0;\n    for (var i = 0, iEnd = args.length, value = void 0; i < iEnd; ++i) {\n        value = AVERAGEA_getArgumentValue(args[i], table);\n        switch (typeof value) {\n            case 'boolean':\n                ++count;\n                result += (value ? 1 : 0);\n                continue;\n            case 'number':\n                if (!isNaN(value)) {\n                    ++count;\n                    result += value;\n                }\n                continue;\n            case 'string':\n                ++count;\n                continue;\n            default:\n                for (var j = 0, jEnd = value.length, value2 = void 0; j < jEnd; ++j) {\n                    value2 = value[j];\n                    switch (typeof value2) {\n                        case 'boolean':\n                            ++count;\n                            result += (value2 ? 1 : 0);\n                            continue;\n                        case 'number':\n                            if (!isNaN(value2)) {\n                                ++count;\n                                result += value2;\n                            }\n                            continue;\n                        case 'string':\n                            ++count;\n                            continue;\n                    }\n                }\n                continue;\n        }\n    }\n    return (count ? (result / count) : 0);\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('AVERAGEA', AVERAGEA);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_AVERAGEA = ((/* unused pure expression or super */ null && (AVERAGEA)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/COUNT.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `COUNT(...values)` implementation. Returns the count of\n * given values that are numbers.\n *\n * @private\n * @function Formula.processorFunctions.COUNT\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction COUNT(args, table) {\n    var values = Formula_FormulaProcessor.getArgumentsValues(args,\n        table);\n    var count = 0;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (!isNaN(value)) {\n                    ++count;\n                }\n                break;\n            case 'object':\n                count += COUNT(value, table);\n                break;\n        }\n    }\n    return count;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('COUNT', COUNT);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_COUNT = ((/* unused pure expression or super */ null && (COUNT)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/COUNTA.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `COUNTA(...values)` implementation. Returns the count of\n * given values that are not empty.\n *\n * @private\n * @function Formula.processorFunctions.COUNT\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction COUNTA(args, table) {\n    var values = Formula_FormulaProcessor.getArgumentsValues(args,\n        table);\n    var count = 0;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (isNaN(value)) {\n                    continue;\n                }\n                break;\n            case 'object':\n                count += COUNTA(value, table);\n                continue;\n            case 'string':\n                if (!value) {\n                    continue;\n                }\n                break;\n        }\n        ++count;\n    }\n    return count;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('COUNTA', COUNTA);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_COUNTA = ((/* unused pure expression or super */ null && (COUNTA)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/IF.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar IF_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `IF(test, value1, value2)` implementation. Returns one of\n * the values based on the test result. `value1` will be returned, if the test\n * result is not `0` or `FALSE`.\n *\n * @private\n * @function Formula.processorFunctions.IF\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {Highcharts.FormulaValue|Array<Highcharts.FormulaValue>}\n * Result value of the process.\n */\nfunction IF(args, table) {\n    return (IF_getArgumentValue(args[0], table) ?\n        IF_getArgumentValue(args[1], table) :\n        IF_getArgumentValue(args[2], table));\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('IF', IF);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_IF = ((/* unused pure expression or super */ null && (IF)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/ISNA.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar ISNA_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `ISNA(value)` implementation. Returns TRUE if value is not\n * a number.\n *\n * @private\n * @function Formula.processorFunctions.ISNA\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {boolean}\n * Result value of the process.\n */\nfunction ISNA(args, table) {\n    var value = ISNA_getArgumentValue(args[0],\n        table);\n    return (typeof value !== 'number' || isNaN(value));\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('ISNA', ISNA);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_ISNA = ((/* unused pure expression or super */ null && (ISNA)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/MAX.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar MAX_getArgumentsValues = Formula_FormulaProcessor.getArgumentsValues;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `MAX(...values)` implementation. Calculates the largest\n * of the given values that are numbers.\n *\n * @private\n * @function Formula.processorFunctions.MAX\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction MAX(args, table) {\n    var values = MAX_getArgumentsValues(args,\n        table);\n    var result = Number.NEGATIVE_INFINITY;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (value > result) {\n                    result = value;\n                }\n                break;\n            case 'object':\n                value = MAX(value);\n                if (value > result) {\n                    result = value;\n                }\n                break;\n        }\n    }\n    return isFinite(result) ? result : 0;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('MAX', MAX);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_MAX = ((/* unused pure expression or super */ null && (MAX)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/MEDIAN.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `MEDIAN(...values)` implementation. Calculates the median\n * average of the given values.\n *\n * @private\n * @function Formula.processorFunctions.MEDIAN\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to process.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction MEDIAN(args, table) {\n    var median = [],\n        values = Formula_FormulaProcessor.getArgumentsValues(args,\n        table);\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (!isNaN(value)) {\n                    median.push(value);\n                }\n                break;\n            case 'object':\n                for (var j = 0, jEnd = value.length, value2 = void 0; j < jEnd; ++j) {\n                    value2 = value[j];\n                    if (typeof value2 === 'number' &&\n                        !isNaN(value2)) {\n                        median.push(value2);\n                    }\n                }\n                break;\n        }\n    }\n    var count = median.length;\n    if (!count) {\n        return NaN;\n    }\n    var half = Math.floor(count / 2); // Floor because index starts at 0\n        return (count % 2 ?\n            median[half] : // Odd\n            (median[half - 1] + median[half]) / 2 // Even\n        );\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('MEDIAN', MEDIAN);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_MEDIAN = ((/* unused pure expression or super */ null && (MEDIAN)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/MIN.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar MIN_getArgumentsValues = Formula_FormulaProcessor.getArgumentsValues;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `MIN(...values)` implementation. Calculates the lowest\n * of the given values that are numbers.\n *\n * @private\n * @function Formula.processorFunctions.MIN\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction MIN(args, table) {\n    var values = MIN_getArgumentsValues(args,\n        table);\n    var result = Number.POSITIVE_INFINITY;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (value < result) {\n                    result = value;\n                }\n                break;\n            case 'object':\n                value = MIN(value);\n                if (value < result) {\n                    result = value;\n                }\n                break;\n        }\n    }\n    return isFinite(result) ? result : 0;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('MIN', MIN);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_MIN = ((/* unused pure expression or super */ null && (MIN)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/MOD.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar MOD_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `MOD(value1, value2)` implementation. Calculates the rest\n * of the division with the given values.\n *\n * @private\n * @function Formula.processorFunctions.MOD\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction MOD(args, table) {\n    var value1 = MOD_getArgumentValue(args[0],\n        table),\n        value2 = MOD_getArgumentValue(args[1],\n        table);\n    if (typeof value1 === 'object') {\n        value1 = value1[0];\n    }\n    if (typeof value2 === 'object') {\n        value2 = value2[0];\n    }\n    if (typeof value1 !== 'number' ||\n        typeof value2 !== 'number' ||\n        value2 === 0) {\n        return NaN;\n    }\n    return value1 % value2;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('MOD', MOD);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_MOD = ((/* unused pure expression or super */ null && (MOD)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/MODE.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Creates the mode map of the given arguments.\n *\n * @private\n * @function Formula.processorFunctions.MULT\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to process.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction getModeMap(args, table) {\n    var modeMap = {},\n        values = Formula_FormulaProcessor.getArgumentsValues(args,\n        table);\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (!isNaN(value)) {\n                    modeMap[value] = (modeMap[value] || 0) + 1;\n                }\n                break;\n            case 'object':\n                for (var j = 0, jEnd = value.length, value2 = void 0; j < jEnd; ++j) {\n                    value2 = value[j];\n                    if (typeof value2 === 'number' &&\n                        !isNaN(value2)) {\n                        modeMap[value2] = (modeMap[value2] || 0) + 1;\n                    }\n                }\n                break;\n        }\n    }\n    return modeMap;\n}\n/**\n * Processor for the `MODE.MULT(...values)` implementation. Calculates the most\n * frequent values of the give values.\n *\n * @private\n * @function Formula.processorFunctions.MULT\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to process.\n *\n * @return {number|Array<number>}\n * Result value of the process.\n */\nfunction MULT(args, table) {\n    var modeMap = getModeMap(args,\n        table),\n        keys = Object.keys(modeMap);\n    if (!keys.length) {\n        return NaN;\n    }\n    var modeKeys = [parseFloat(keys[0])],\n        modeCount = modeMap[keys[0]];\n    for (var i = 1, iEnd = keys.length, key = void 0, count = void 0; i < iEnd; ++i) {\n        key = keys[i];\n        count = modeMap[key];\n        if (modeCount < count) {\n            modeKeys = [parseFloat(key)];\n            modeCount = count;\n        }\n        else if (modeCount === count) {\n            modeKeys.push(parseFloat(key));\n        }\n    }\n    return modeCount > 1 ? modeKeys : NaN;\n}\n/**\n * Processor for the `MODE.SNGL(...values)` implementation. Calculates the\n * lowest most frequent value of the give values.\n *\n * @private\n * @function Formula.processorFunctions['MODE.SNGL']\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to process.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction SNGL(args, table) {\n    var modeMap = getModeMap(args,\n        table),\n        keys = Object.keys(modeMap);\n    if (!keys.length) {\n        return NaN;\n    }\n    var modeKey = parseFloat(keys[0]),\n        modeCount = modeMap[keys[0]];\n    for (var i = 1, iEnd = keys.length, key = void 0, keyValue = void 0, count = void 0; i < iEnd; ++i) {\n        key = keys[i];\n        count = modeMap[key];\n        if (modeCount < count) {\n            modeKey = parseFloat(key);\n            modeCount = count;\n        }\n        else if (modeCount === count) {\n            keyValue = parseFloat(key);\n            if (modeKey > keyValue) {\n                modeKey = keyValue;\n                modeCount = count;\n            }\n        }\n    }\n    return modeCount > 1 ? modeKey : NaN;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('MODE', SNGL);\nFormula_FormulaProcessor.registerProcessorFunction('MODE.MULT', MULT);\nFormula_FormulaProcessor.registerProcessorFunction('MODE.SNGL', SNGL);\n/* *\n *\n *  Default Export\n *\n * */\nvar MODE = {\n    MULT: MULT,\n    SNGL: SNGL\n};\n/* harmony default export */ var Functions_MODE = ((/* unused pure expression or super */ null && (MODE)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/NOT.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar NOT_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `NOT(value)` implementation. Returns the opposite test\n * result.\n *\n * @private\n * @function Formula.processorFunctions.NOT\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {boolean|number}\n * Result value of the process.\n */\nfunction NOT(args, table) {\n    var value = NOT_getArgumentValue(args[0],\n        table);\n    if (typeof value === 'object') {\n        value = value[0];\n    }\n    switch (typeof value) {\n        case 'boolean':\n        case 'number':\n            return !value;\n    }\n    return NaN;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('NOT', NOT);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_NOT = ((/* unused pure expression or super */ null && (NOT)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/OR.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar OR_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `OR(...tests)` implementation. Returns `TRUE`, if one test\n * result is not `0` or `FALSE`.\n *\n * @private\n * @function Formula.processorFunctions.AND\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {boolean}\n * Result value of the process.\n */\nfunction OR(args, table) {\n    for (var i = 0, iEnd = args.length, value = void 0; i < iEnd; ++i) {\n        value = OR_getArgumentValue(args[i], table);\n        if (typeof value === 'object') {\n            if (OR(value, table)) {\n                return true;\n            }\n        }\n        else if (value) {\n            return true;\n        }\n    }\n    return false;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('OR', OR);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_OR = ((/* unused pure expression or super */ null && (OR)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/PRODUCT.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar PRODUCT_getArgumentsValues = Formula_FormulaProcessor.getArgumentsValues;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `PRODUCT(...values)` implementation. Calculates the product\n * of the given values.\n *\n * @private\n * @function Formula.processorFunctions.PRODUCT\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction PRODUCT(args, table) {\n    var values = PRODUCT_getArgumentsValues(args,\n        table);\n    var result = 1,\n        calculated = false;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (!isNaN(value)) {\n                    calculated = true;\n                    result *= value;\n                }\n                break;\n            case 'object':\n                calculated = true;\n                result *= PRODUCT(value, table);\n                break;\n        }\n    }\n    return (calculated ? result : 0);\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('PRODUCT', PRODUCT);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_PRODUCT = ((/* unused pure expression or super */ null && (PRODUCT)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/SUM.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `SUM(...values)` implementation. Calculates the sum of the\n * given values.\n *\n * @private\n * @function Formula.processorFunctions.SUM\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to process.\n *\n * @return {number}\n * Result value of the process.\n */\nfunction SUM(args, table) {\n    var values = Formula_FormulaProcessor.getArgumentsValues(args,\n        table);\n    var result = 0;\n    for (var i = 0, iEnd = values.length, value = void 0; i < iEnd; ++i) {\n        value = values[i];\n        switch (typeof value) {\n            case 'number':\n                if (!isNaN(value)) {\n                    result += value;\n                }\n                break;\n            case 'object':\n                result += SUM(value, table);\n                break;\n        }\n    }\n    return result;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('SUM', SUM); // 🐝\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_SUM = ((/* unused pure expression or super */ null && (SUM)));\n\n;// ./code/es5/es-modules/Data/Formula/Functions/XOR.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\n\nvar XOR_getArgumentValue = Formula_FormulaProcessor.getArgumentValue;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Processor for the `XOR(...tests)` implementation. Returns `TRUE`, if at least\n * one of the given tests differs in result of other tests.\n *\n * @private\n * @function Formula.processorFunctions.AND\n *\n * @param {Highcharts.FormulaArguments} args\n * Arguments to process.\n *\n * @param {Highcharts.DataTable} [table]\n * Table to use for references and ranges.\n *\n * @return {boolean|number}\n * Result value of the process.\n */\nfunction XOR(args, table) {\n    for (var i = 0, iEnd = args.length, lastValue = void 0, value = void 0; i < iEnd; ++i) {\n        value = XOR_getArgumentValue(args[i], table);\n        switch (typeof value) {\n            case 'boolean':\n            case 'number':\n                if (typeof lastValue === 'undefined') {\n                    lastValue = !!value;\n                }\n                else if (!!value !== lastValue) {\n                    return true;\n                }\n                break;\n            case 'object':\n                for (var j = 0, jEnd = value.length, value2 = void 0; j < jEnd; ++j) {\n                    value2 = value[j];\n                    switch (typeof value2) {\n                        case 'boolean':\n                        case 'number':\n                            if (typeof lastValue === 'undefined') {\n                                lastValue = !!value2;\n                            }\n                            else if (!!value2 !== lastValue) {\n                                return true;\n                            }\n                            break;\n                    }\n                }\n                break;\n        }\n    }\n    return false;\n}\n/* *\n *\n *  Registry\n *\n * */\nFormula_FormulaProcessor.registerProcessorFunction('XOR', XOR);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Functions_XOR = ((/* unused pure expression or super */ null && (XOR)));\n\n;// ./code/es5/es-modules/Data/Formula/Formula.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\nvar __assign = (undefined && undefined.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\n/* *\n *\n *  Imports\n *\n * */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* *\n *\n *  Default Export\n *\n * */\n/**\n * Formula engine to make use of spreadsheet formula strings.\n * @internal\n */\nvar Formula = __assign(__assign(__assign({}, Formula_FormulaParser), Formula_FormulaProcessor), FormulaTypes);\n/* harmony default export */ var Formula_Formula = (Formula);\n\n;// ./code/es5/es-modules/Data/Converters/CSVConverter.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Torstein Hønsi\n *  - Christer Vasseng\n *  - Gøran Slettemark\n *  - Sophie Bremer\n *\n * */\n\nvar CSVConverter_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar CSVConverter_assign = (undefined && undefined.__assign) || function () {\n    CSVConverter_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return CSVConverter_assign.apply(this, arguments);\n};\n\n\nvar CSVConverter_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Handles parsing and transforming CSV to a table.\n *\n * @private\n */\nvar CSVConverter = /** @class */ (function (_super) {\n    CSVConverter_extends(CSVConverter, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the CSV parser.\n     *\n     * @param {CSVConverter.UserOptions} [options]\n     * Options for the CSV parser.\n     */\n    function CSVConverter(options) {\n        var _this = this;\n        var mergedOptions = CSVConverter_merge(CSVConverter.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        _this.columns = [];\n        _this.headers = [];\n        _this.dataTypes = [];\n        _this.options = mergedOptions;\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Creates a CSV string from the datatable on the connector instance.\n     *\n     * @param {DataConnector} connector\n     * Connector instance to export from.\n     *\n     * @param {CSVConverter.Options} [options]\n     * Options used for the export.\n     *\n     * @return {string}\n     * CSV string from the connector table.\n     */\n    CSVConverter.prototype.export = function (connector, options) {\n        if (options === void 0) { options = this.options; }\n        var useLocalDecimalPoint = options.useLocalDecimalPoint,\n            lineDelimiter = options.lineDelimiter,\n            exportNames = (this.options.firstRowAsNames !== false);\n        var decimalPoint = options.decimalPoint,\n            itemDelimiter = options.itemDelimiter;\n        if (!decimalPoint) {\n            decimalPoint = (itemDelimiter !== ',' && useLocalDecimalPoint ?\n                (1.1).toLocaleString()[1] :\n                '.');\n        }\n        if (!itemDelimiter) {\n            itemDelimiter = (decimalPoint === ',' ? ';' : ',');\n        }\n        var columns = connector.getSortedColumns(options.usePresentationOrder),\n            columnNames = Object.keys(columns),\n            csvRows = [],\n            columnsCount = columnNames.length;\n        var rowArray = [];\n        // Add the names as the first row if they should be exported\n        if (exportNames) {\n            csvRows.push(columnNames.map(function (columnName) { return \"\\\"\".concat(columnName, \"\\\"\"); }).join(itemDelimiter));\n        }\n        for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\n            var columnName = columnNames[columnIndex],\n                column = columns[columnName],\n                columnLength = column.length;\n            var columnMeta = connector.whatIs(columnName);\n            var columnDataType = void 0;\n            if (columnMeta) {\n                columnDataType = columnMeta.dataType;\n            }\n            for (var rowIndex = 0; rowIndex < columnLength; rowIndex++) {\n                var cellValue = column[rowIndex];\n                if (!rowArray[rowIndex]) {\n                    rowArray[rowIndex] = [];\n                }\n                // Prefer datatype from metadata\n                if (columnDataType === 'string') {\n                    cellValue = '\"' + cellValue + '\"';\n                }\n                else if (typeof cellValue === 'number') {\n                    cellValue = String(cellValue).replace('.', decimalPoint);\n                }\n                else if (typeof cellValue === 'string') {\n                    cellValue = \"\\\"\".concat(cellValue, \"\\\"\");\n                }\n                rowArray[rowIndex][columnIndex] = cellValue;\n                // On the final column, push the row to the CSV\n                if (columnIndex === columnsCount - 1) {\n                    // Trim repeated undefined values starting at the end\n                    // Currently, we export the first \"comma\" even if the\n                    // second value is undefined\n                    var i = columnIndex;\n                    while (rowArray[rowIndex].length > 2) {\n                        var cellVal = rowArray[rowIndex][i];\n                        if (cellVal !== void 0) {\n                            break;\n                        }\n                        rowArray[rowIndex].pop();\n                        i--;\n                    }\n                    csvRows.push(rowArray[rowIndex].join(itemDelimiter));\n                }\n            }\n        }\n        return csvRows.join(lineDelimiter);\n    };\n    /**\n     * Initiates parsing of CSV\n     *\n     * @param {CSVConverter.UserOptions}[options]\n     * Options for the parser\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits CSVDataParser#parse\n     * @emits CSVDataParser#afterParse\n     */\n    CSVConverter.prototype.parse = function (options, eventDetail) {\n        var converter = this,\n            dataTypes = converter.dataTypes,\n            parserOptions = CSVConverter_merge(this.options,\n            options),\n            beforeParse = parserOptions.beforeParse,\n            lineDelimiter = parserOptions.lineDelimiter,\n            firstRowAsNames = parserOptions.firstRowAsNames,\n            itemDelimiter = parserOptions.itemDelimiter;\n        var lines,\n            rowIt = 0,\n            csv = parserOptions.csv,\n            startRow = parserOptions.startRow,\n            endRow = parserOptions.endRow,\n            column;\n        converter.columns = [];\n        converter.emit({\n            type: 'parse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.headers\n        });\n        if (csv && beforeParse) {\n            csv = beforeParse(csv);\n        }\n        if (csv) {\n            lines = csv\n                .replace(/\\r\\n|\\r/g, '\\n') // Windows | Mac\n                .split(lineDelimiter || '\\n');\n            if (!startRow || startRow < 0) {\n                startRow = 0;\n            }\n            if (!endRow || endRow >= lines.length) {\n                endRow = lines.length - 1;\n            }\n            if (!itemDelimiter) {\n                converter.guessedItemDelimiter =\n                    converter.guessDelimiter(lines);\n            }\n            // If the first row contain names, add them to the\n            // headers array and skip the row.\n            if (firstRowAsNames) {\n                var headers = lines[0].split(itemDelimiter || converter.guessedItemDelimiter || ',');\n                // Remove \"\"s from the headers\n                for (var i = 0; i < headers.length; i++) {\n                    headers[i] = headers[i].trim().replace(/^[\"']|[\"']$/g, '');\n                }\n                converter.headers = headers;\n                startRow++;\n            }\n            var offset = 0;\n            for (rowIt = startRow; rowIt <= endRow; rowIt++) {\n                if (lines[rowIt][0] === '#') {\n                    offset++;\n                }\n                else {\n                    converter\n                        .parseCSVRow(lines[rowIt], rowIt - startRow - offset);\n                }\n            }\n            if (dataTypes.length &&\n                dataTypes[0].length &&\n                dataTypes[0][1] === 'date' && // Format is a string date\n                !converter.options.dateFormat) {\n                converter.deduceDateFormat(converter.columns[0], null, true);\n            }\n            // Guess types.\n            for (var i = 0, iEnd = converter.columns.length; i < iEnd; ++i) {\n                column = converter.columns[i];\n                for (var j = 0, jEnd = column.length; j < jEnd; ++j) {\n                    if (column[j] && typeof column[j] === 'string') {\n                        var cellValue = converter.asGuessedType(column[j]);\n                        if (cellValue instanceof Date) {\n                            cellValue = cellValue.getTime();\n                        }\n                        converter.columns[i][j] = cellValue;\n                    }\n                }\n            }\n        }\n        converter.emit({\n            type: 'afterParse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.headers\n        });\n    };\n    /**\n     * Internal method that parses a single CSV row\n     */\n    CSVConverter.prototype.parseCSVRow = function (columnStr, rowNumber) {\n        var converter = this,\n            columns = converter.columns || [],\n            dataTypes = converter.dataTypes,\n            _a = converter.options,\n            startColumn = _a.startColumn,\n            endColumn = _a.endColumn,\n            itemDelimiter = (converter.options.itemDelimiter ||\n                converter.guessedItemDelimiter);\n        var decimalPoint = converter.options.decimalPoint;\n        if (!decimalPoint || decimalPoint === itemDelimiter) {\n            decimalPoint = converter.guessedDecimalPoint || '.';\n        }\n        var i = 0, c = '', token = '', actualColumn = 0, column = 0;\n        var read = function (j) {\n                c = columnStr[j];\n        };\n        var pushType = function (type) {\n                if (dataTypes.length < column + 1) {\n                    dataTypes.push([type]);\n            }\n            if (dataTypes[column][dataTypes[column].length - 1] !== type) {\n                dataTypes[column].push(type);\n            }\n        };\n        var push = function () {\n                if (startColumn > actualColumn || actualColumn > endColumn) {\n                    // Skip this column, but increment the column count (#7272)\n                    ++actualColumn;\n                token = '';\n                return;\n            }\n            // Save the type of the token.\n            if (typeof token === 'string') {\n                if (!isNaN(parseFloat(token)) && isFinite(token)) {\n                    token = parseFloat(token);\n                    pushType('number');\n                }\n                else if (!isNaN(Date.parse(token))) {\n                    token = token.replace(/\\//g, '-');\n                    pushType('date');\n                }\n                else {\n                    pushType('string');\n                }\n            }\n            else {\n                pushType('number');\n            }\n            if (columns.length < column + 1) {\n                columns.push([]);\n            }\n            // Try to apply the decimal point, and check if the token then is a\n            // number. If not, reapply the initial value\n            if (typeof token !== 'number' &&\n                converter.guessType(token) !== 'number' &&\n                decimalPoint) {\n                var initialValue = token;\n                token = token.replace(decimalPoint, '.');\n                if (converter.guessType(token) !== 'number') {\n                    token = initialValue;\n                }\n            }\n            columns[column][rowNumber] = token;\n            token = '';\n            ++column;\n            ++actualColumn;\n        };\n        if (!columnStr.trim().length) {\n            return;\n        }\n        if (columnStr.trim()[0] === '#') {\n            return;\n        }\n        for (; i < columnStr.length; i++) {\n            read(i);\n            if (c === '#') {\n                // If there are hexvalues remaining (#13283)\n                if (!/^#[A-F\\d]{3,3}|[A-F\\d]{6,6}/i.test(columnStr.substring(i))) {\n                    // The rest of the row is a comment\n                    push();\n                    return;\n                }\n            }\n            // Quoted string\n            if (c === '\"') {\n                read(++i);\n                while (i < columnStr.length) {\n                    if (c === '\"') {\n                        break;\n                    }\n                    token += c;\n                    read(++i);\n                }\n            }\n            else if (c === itemDelimiter) {\n                push();\n                // Actual column data\n            }\n            else {\n                token += c;\n            }\n        }\n        push();\n    };\n    /**\n     * Internal method that guesses the delimiter from the first\n     * 13 lines of the CSV\n     * @param {Array<string>} lines\n     * The CSV, split into lines\n     */\n    CSVConverter.prototype.guessDelimiter = function (lines) {\n        var points = 0,\n            commas = 0,\n            guessed;\n        var potDelimiters = {\n                ',': 0,\n                ';': 0,\n                '\\t': 0\n            }, linesCount = lines.length;\n        for (var i = 0; i < linesCount; i++) {\n            var inStr = false,\n                c = void 0,\n                cn = void 0,\n                cl = void 0,\n                token = '';\n            // We should be able to detect dateformats within 13 rows\n            if (i > 13) {\n                break;\n            }\n            var columnStr = lines[i];\n            for (var j = 0; j < columnStr.length; j++) {\n                c = columnStr[j];\n                cn = columnStr[j + 1];\n                cl = columnStr[j - 1];\n                if (c === '#') {\n                    // Skip the rest of the line - it's a comment\n                    break;\n                }\n                if (c === '\"') {\n                    if (inStr) {\n                        if (cl !== '\"' && cn !== '\"') {\n                            while (cn === ' ' && j < columnStr.length) {\n                                cn = columnStr[++j];\n                            }\n                            // After parsing a string, the next non-blank\n                            // should be a delimiter if the CSV is properly\n                            // formed.\n                            if (typeof potDelimiters[cn] !== 'undefined') {\n                                potDelimiters[cn]++;\n                            }\n                            inStr = false;\n                        }\n                    }\n                    else {\n                        inStr = true;\n                    }\n                }\n                else if (typeof potDelimiters[c] !== 'undefined') {\n                    token = token.trim();\n                    if (!isNaN(Date.parse(token))) {\n                        potDelimiters[c]++;\n                    }\n                    else if (isNaN(Number(token)) ||\n                        !isFinite(Number(token))) {\n                        potDelimiters[c]++;\n                    }\n                    token = '';\n                }\n                else {\n                    token += c;\n                }\n                if (c === ',') {\n                    commas++;\n                }\n                if (c === '.') {\n                    points++;\n                }\n            }\n        }\n        // Count the potential delimiters.\n        // This could be improved by checking if the number of delimiters\n        // equals the number of columns - 1\n        if (potDelimiters[';'] > potDelimiters[',']) {\n            guessed = ';';\n        }\n        else if (potDelimiters[','] > potDelimiters[';']) {\n            guessed = ',';\n        }\n        else {\n            // No good guess could be made..\n            guessed = ',';\n        }\n        // Try to deduce the decimal point if it's not explicitly set.\n        // If both commas or points is > 0 there is likely an issue\n        if (points > commas) {\n            this.guessedDecimalPoint = '.';\n        }\n        else {\n            this.guessedDecimalPoint = ',';\n        }\n        return guessed;\n    };\n    /**\n     * Handles converting the parsed data to a table.\n     *\n     * @return {DataTable}\n     * Table from the parsed CSV.\n     */\n    CSVConverter.prototype.getTable = function () {\n        return Converters_DataConverter.getTableFromColumns(this.columns, this.headers);\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options\n     */\n    CSVConverter.defaultOptions = CSVConverter_assign(CSVConverter_assign({}, Converters_DataConverter.defaultOptions), { lineDelimiter: '\\n' });\n    return CSVConverter;\n}(Converters_DataConverter));\nConverters_DataConverter.registerType('CSV', CSVConverter);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Converters_CSVConverter = (CSVConverter);\n\n;// ./code/es5/es-modules/Data/Connectors/CSVConnector.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Torstein Hønsi\n *  - Christer Vasseng\n *  - Gøran Slettemark\n *  - Sophie Bremer\n *\n * */\n\nvar CSVConnector_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar CSVConnector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Class that handles creating a DataConnector from CSV\n *\n * @private\n */\nvar CSVConnector = /** @class */ (function (_super) {\n    CSVConnector_extends(CSVConnector, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of CSVConnector.\n     *\n     * @param {CSVConnector.UserOptions} [options]\n     * Options for the connector and converter.\n     */\n    function CSVConnector(options) {\n        var _this = this;\n        var mergedOptions = CSVConnector_merge(CSVConnector.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        _this.converter = new Converters_CSVConverter(mergedOptions);\n        _this.options = mergedOptions;\n        if (mergedOptions.enablePolling) {\n            _this.startPolling(Math.max(mergedOptions.dataRefreshRate || 0, 1) * 1000);\n        }\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initiates the loading of the CSV source to the connector\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits CSVConnector#load\n     * @emits CSVConnector#afterLoad\n     */\n    CSVConnector.prototype.load = function (eventDetail) {\n        var connector = this,\n            converter = connector.converter,\n            table = connector.table,\n            _a = connector.options,\n            csv = _a.csv,\n            csvURL = _a.csvURL,\n            dataModifier = _a.dataModifier;\n        connector.emit({\n            type: 'load',\n            csv: csv,\n            detail: eventDetail,\n            table: table\n        });\n        return Promise\n            .resolve(csvURL ?\n            fetch(csvURL).then(function (response) { return response.text(); }) :\n            csv || '')\n            .then(function (csv) {\n            if (csv) {\n                // If already loaded, clear the current rows\n                table.deleteColumns();\n                converter.parse({ csv: csv });\n                table.setColumns(converter.getTable().getColumns());\n            }\n            return connector\n                .setModifierOptions(dataModifier)\n                .then(function () { return csv; });\n        })\n            .then(function (csv) {\n            connector.emit({\n                type: 'afterLoad',\n                csv: csv,\n                detail: eventDetail,\n                table: table\n            });\n            return connector;\n        })['catch'](function (error) {\n            connector.emit({\n                type: 'loadError',\n                detail: eventDetail,\n                error: error,\n                table: table\n            });\n            throw error;\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    CSVConnector.defaultOptions = {\n        csv: '',\n        csvURL: '',\n        enablePolling: false,\n        dataRefreshRate: 1,\n        firstRowAsNames: true\n    };\n    return CSVConnector;\n}(Connectors_DataConnector));\nConnectors_DataConnector.registerType('CSV', CSVConnector);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Connectors_CSVConnector = ((/* unused pure expression or super */ null && (CSVConnector)));\n\n;// ./code/es5/es-modules/Data/Converters/JSONConverter.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Pawel Lysy\n *\n * */\n\nvar JSONConverter_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar JSONConverter_assign = (undefined && undefined.__assign) || function () {\n    JSONConverter_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return JSONConverter_assign.apply(this, arguments);\n};\n\n\n\nvar error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, JSONConverter_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, JSONConverter_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, JSONConverter_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Handles parsing and transforming JSON to a table.\n *\n * @private\n */\nvar JSONConverter = /** @class */ (function (_super) {\n    JSONConverter_extends(JSONConverter, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the JSON parser.\n     *\n     * @param {JSONConverter.UserOptions} [options]\n     * Options for the JSON parser.\n     */\n    function JSONConverter(options) {\n        var _this = this;\n        var mergedOptions = JSONConverter_merge(JSONConverter.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        _this.columns = [];\n        _this.headers = [];\n        _this.options = mergedOptions;\n        _this.table = new Data_DataTable();\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initiates parsing of JSON structure.\n     *\n     * @param {JSONConverter.UserOptions}[options]\n     * Options for the parser\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits JSONConverter#parse\n     * @emits JSONConverter#afterParse\n     */\n    JSONConverter.prototype.parse = function (options, eventDetail) {\n        var converter = this;\n        options = JSONConverter_merge(converter.options, options);\n        var beforeParse = options.beforeParse,\n            orientation = options.orientation,\n            firstRowAsNames = options.firstRowAsNames,\n            columnNames = options.columnNames;\n        var data = options.data;\n        if (!data) {\n            return;\n        }\n        converter.columns = [];\n        converter.emit({\n            type: 'parse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.headers\n        });\n        if (beforeParse) {\n            data = beforeParse(data);\n        }\n        data = data.slice();\n        if (orientation === 'columns') {\n            for (var i = 0, iEnd = data.length; i < iEnd; i++) {\n                var item = data[i];\n                if (!(item instanceof Array)) {\n                    return;\n                }\n                if (converter.headers instanceof Array) {\n                    if (firstRowAsNames) {\n                        converter.headers.push(\"\".concat(item.shift()));\n                    }\n                    else if (columnNames && columnNames instanceof Array) {\n                        converter.headers.push(columnNames[i]);\n                    }\n                    converter.table.setColumn(converter.headers[i] || i.toString(), item);\n                }\n                else {\n                    error('JSONConverter: Invalid `columnNames` option.', false);\n                }\n            }\n        }\n        else if (orientation === 'rows') {\n            if (firstRowAsNames) {\n                converter.headers = data.shift();\n            }\n            else if (columnNames) {\n                converter.headers = columnNames;\n            }\n            var _loop_1 = function (rowIndex,\n                iEnd) {\n                    var row = data[rowIndex];\n                if (JSONConverter_isArray(row)) {\n                    for (var columnIndex = 0, jEnd = row.length; columnIndex < jEnd; columnIndex++) {\n                        if (converter.columns.length < columnIndex + 1) {\n                            converter.columns.push([]);\n                        }\n                        converter.columns[columnIndex].push(row[columnIndex]);\n                        if (converter.headers instanceof Array) {\n                            this_1.table.setColumn(converter.headers[columnIndex] ||\n                                columnIndex.toString(), converter.columns[columnIndex]);\n                        }\n                        else {\n                            error('JSONConverter: Invalid `columnNames` option.', false);\n                        }\n                    }\n                }\n                else {\n                    var columnNames_1 = converter.headers;\n                    if (columnNames_1 && !(columnNames_1 instanceof Array)) {\n                        var newRow_1 = {};\n                        JSONConverter_objectEach(columnNames_1, function (arrayWithPath, name) {\n                            newRow_1[name] = arrayWithPath.reduce(function (acc, key) {\n                                return acc[key];\n                            }, row);\n                        });\n                        row = newRow_1;\n                    }\n                    this_1.table.setRows([row], rowIndex);\n                }\n            };\n            var this_1 = this;\n            for (var rowIndex = 0, iEnd = data.length; rowIndex < iEnd; rowIndex++) {\n                _loop_1(rowIndex, iEnd);\n            }\n        }\n        converter.emit({\n            type: 'afterParse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.headers\n        });\n    };\n    /**\n     * Handles converting the parsed data to a table.\n     *\n     * @return {DataTable}\n     * Table from the parsed CSV.\n     */\n    JSONConverter.prototype.getTable = function () {\n        return this.table;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options\n     */\n    JSONConverter.defaultOptions = JSONConverter_assign(JSONConverter_assign({}, Converters_DataConverter.defaultOptions), { data: [], orientation: 'rows' });\n    return JSONConverter;\n}(Converters_DataConverter));\nConverters_DataConverter.registerType('JSON', JSONConverter);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Converters_JSONConverter = (JSONConverter);\n\n;// ./code/es5/es-modules/Data/Connectors/JSONConnector.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Pawel Lysy\n *\n * */\n\nvar JSONConnector_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar JSONConnector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Class that handles creating a DataConnector from JSON structure\n *\n * @private\n */\nvar JSONConnector = /** @class */ (function (_super) {\n    JSONConnector_extends(JSONConnector, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of JSONConnector.\n     *\n     * @param {JSONConnector.UserOptions} [options]\n     * Options for the connector and converter.\n     */\n    function JSONConnector(options) {\n        var _this = this;\n        var mergedOptions = JSONConnector_merge(JSONConnector.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        _this.converter = new Converters_JSONConverter(mergedOptions);\n        _this.options = mergedOptions;\n        if (mergedOptions.enablePolling) {\n            _this.startPolling(Math.max(mergedOptions.dataRefreshRate || 0, 1) * 1000);\n        }\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initiates the loading of the JSON source to the connector\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits JSONConnector#load\n     * @emits JSONConnector#afterLoad\n     */\n    JSONConnector.prototype.load = function (eventDetail) {\n        var connector = this,\n            converter = connector.converter,\n            table = connector.table,\n            _a = connector.options,\n            data = _a.data,\n            dataUrl = _a.dataUrl,\n            dataModifier = _a.dataModifier;\n        connector.emit({\n            type: 'load',\n            data: data,\n            detail: eventDetail,\n            table: table\n        });\n        return Promise\n            .resolve(dataUrl ?\n            fetch(dataUrl).then(function (json) { return json.json(); }) :\n            data || [])\n            .then(function (data) {\n            if (data) {\n                // If already loaded, clear the current rows\n                table.deleteColumns();\n                converter.parse({ data: data });\n                table.setColumns(converter.getTable().getColumns());\n            }\n            return connector.setModifierOptions(dataModifier).then(function () { return data; });\n        })\n            .then(function (data) {\n            connector.emit({\n                type: 'afterLoad',\n                data: data,\n                detail: eventDetail,\n                table: table\n            });\n            return connector;\n        })['catch'](function (error) {\n            connector.emit({\n                type: 'loadError',\n                detail: eventDetail,\n                error: error,\n                table: table\n            });\n            throw error;\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    JSONConnector.defaultOptions = {\n        data: [],\n        enablePolling: false,\n        dataRefreshRate: 0,\n        firstRowAsNames: true,\n        orientation: 'rows'\n    };\n    return JSONConnector;\n}(Connectors_DataConnector));\nConnectors_DataConnector.registerType('JSON', JSONConnector);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Connectors_JSONConnector = ((/* unused pure expression or super */ null && (JSONConnector)));\n\n;// ./code/es5/es-modules/Data/Converters/GoogleSheetsConverter.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Torstein Hønsi\n *  - Gøran Slettemark\n *  - Wojciech Chmiel\n *  - Sophie Bremer\n *\n * */\n\nvar GoogleSheetsConverter_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar GoogleSheetsConverter_assign = (undefined && undefined.__assign) || function () {\n    GoogleSheetsConverter_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return GoogleSheetsConverter_assign.apply(this, arguments);\n};\n\n\nvar GoogleSheetsConverter_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, GoogleSheetsConverter_uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Handles parsing and transformation of an Google Sheets to a table.\n *\n * @private\n */\nvar GoogleSheetsConverter = /** @class */ (function (_super) {\n    GoogleSheetsConverter_extends(GoogleSheetsConverter, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the GoogleSheetsConverter.\n     *\n     * @param {GoogleSheetsConverter.UserOptions} [options]\n     * Options for the GoogleSheetsConverter.\n     */\n    function GoogleSheetsConverter(options) {\n        var _this = this;\n        var mergedOptions = GoogleSheetsConverter_merge(GoogleSheetsConverter.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        _this.columns = [];\n        _this.header = [];\n        _this.options = mergedOptions;\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initiates the parsing of the Google Sheet\n     *\n     * @param {GoogleSheetsConverter.UserOptions}[options]\n     * Options for the parser\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits GoogleSheetsParser#parse\n     * @emits GoogleSheetsParser#afterParse\n     */\n    GoogleSheetsConverter.prototype.parse = function (options, eventDetail) {\n        var _a;\n        var converter = this,\n            parseOptions = GoogleSheetsConverter_merge(converter.options,\n            options);\n        var columns = (((_a = parseOptions.json) === null || _a === void 0 ? void 0 : _a.values) || []).map(function (column) { return column.slice(); });\n        if (columns.length === 0) {\n            return false;\n        }\n        converter.header = [];\n        converter.columns = [];\n        converter.emit({\n            type: 'parse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.header\n        });\n        // If beforeParse is defined, use it to modify the data\n        var beforeParse = parseOptions.beforeParse,\n            json = parseOptions.json;\n        if (beforeParse && json) {\n            columns = beforeParse(json.values);\n        }\n        var column;\n        converter.columns = columns;\n        for (var i = 0, iEnd = columns.length; i < iEnd; i++) {\n            column = columns[i];\n            converter.header[i] = (parseOptions.firstRowAsNames ?\n                \"\".concat(column.shift()) :\n                GoogleSheetsConverter_uniqueKey());\n            for (var j = 0, jEnd = column.length; j < jEnd; ++j) {\n                if (column[j] && typeof column[j] === 'string') {\n                    var cellValue = converter.asGuessedType(column[j]);\n                    if (cellValue instanceof Date) {\n                        cellValue = cellValue.getTime();\n                    }\n                    converter.columns[i][j] = cellValue;\n                }\n            }\n        }\n        converter.emit({\n            type: 'afterParse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.header\n        });\n    };\n    /**\n     * Handles converting the parsed data to a table.\n     *\n     * @return {DataTable}\n     * Table from the parsed Google Sheet\n     */\n    GoogleSheetsConverter.prototype.getTable = function () {\n        return Converters_DataConverter.getTableFromColumns(this.columns, this.header);\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options\n     */\n    GoogleSheetsConverter.defaultOptions = GoogleSheetsConverter_assign({}, Converters_DataConverter.defaultOptions);\n    return GoogleSheetsConverter;\n}(Converters_DataConverter));\nConverters_DataConverter.registerType('GoogleSheets', GoogleSheetsConverter);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Converters_GoogleSheetsConverter = (GoogleSheetsConverter);\n\n;// ./code/es5/es-modules/Data/Connectors/GoogleSheetsConnector.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Torstein Hønsi\n *  - Gøran Slettemark\n *  - Wojciech Chmiel\n *  - Sophie Bremer\n *  - Jomar Hønsi\n *\n * */\n\nvar GoogleSheetsConnector_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar GoogleSheetsConnector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, GoogleSheetsConnector_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Tests Google's response for error.\n * @private\n */\nfunction isGoogleError(json) {\n    return (typeof json === 'object' && json &&\n        typeof json.error === 'object' && json.error &&\n        typeof json.error.code === 'number' &&\n        typeof json.error.message === 'string' &&\n        typeof json.error.status === 'string');\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @todo implement save, requires oauth2\n */\nvar GoogleSheetsConnector = /** @class */ (function (_super) {\n    GoogleSheetsConnector_extends(GoogleSheetsConnector, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of GoogleSheetsConnector\n     *\n     * @param {GoogleSheetsConnector.UserOptions} [options]\n     * Options for the connector and converter.\n     */\n    function GoogleSheetsConnector(options) {\n        var _this = this;\n        var mergedOptions = GoogleSheetsConnector_merge(GoogleSheetsConnector.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        _this.converter = new Converters_GoogleSheetsConverter(mergedOptions);\n        _this.options = mergedOptions;\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Loads data from a Google Spreadsheet.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Promise<this>}\n     * Same connector instance with modified table.\n     */\n    GoogleSheetsConnector.prototype.load = function (eventDetail) {\n        var connector = this,\n            converter = connector.converter,\n            table = connector.table,\n            _a = connector.options,\n            dataModifier = _a.dataModifier,\n            dataRefreshRate = _a.dataRefreshRate,\n            enablePolling = _a.enablePolling,\n            firstRowAsNames = _a.firstRowAsNames,\n            googleAPIKey = _a.googleAPIKey,\n            googleSpreadsheetKey = _a.googleSpreadsheetKey,\n            url = GoogleSheetsConnector.buildFetchURL(googleAPIKey,\n            googleSpreadsheetKey,\n            connector.options);\n        connector.emit({\n            type: 'load',\n            detail: eventDetail,\n            table: table,\n            url: url\n        });\n        if (!URL.canParse(url)) {\n            throw new Error('Invalid URL: ' + url);\n        }\n        return fetch(url)\n            .then(function (response) { return (response.json()); })\n            .then(function (json) {\n            if (isGoogleError(json)) {\n                throw new Error(json.error.message);\n            }\n            converter.parse({\n                firstRowAsNames: firstRowAsNames,\n                json: json\n            });\n            // If already loaded, clear the current table\n            table.deleteColumns();\n            table.setColumns(converter.getTable().getColumns());\n            return connector.setModifierOptions(dataModifier);\n        })\n            .then(function () {\n            connector.emit({\n                type: 'afterLoad',\n                detail: eventDetail,\n                table: table,\n                url: url\n            });\n            // Polling\n            if (enablePolling) {\n                setTimeout(function () { return connector.load(); }, Math.max(dataRefreshRate || 0, 1) * 1000);\n            }\n            return connector;\n        })['catch'](function (error) {\n            connector.emit({\n                type: 'loadError',\n                detail: eventDetail,\n                error: error,\n                table: table\n            });\n            throw error;\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    GoogleSheetsConnector.defaultOptions = {\n        googleAPIKey: '',\n        googleSpreadsheetKey: '',\n        enablePolling: false,\n        dataRefreshRate: 2,\n        firstRowAsNames: true\n    };\n    return GoogleSheetsConnector;\n}(Connectors_DataConnector));\n/* *\n *\n *  Class Namespace\n *\n * */\n(function (GoogleSheetsConnector) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Creates GoogleSheets API v4 URL.\n     * @private\n     */\n    function buildFetchURL(apiKey, sheetKey, options) {\n        if (options === void 0) { options = {}; }\n        var url = new URL(\"https://sheets.googleapis.com/v4/spreadsheets/\".concat(sheetKey, \"/values/\"));\n        var range = options.onlyColumnNames ?\n                'A1:Z1' : buildQueryRange(options);\n        url.pathname += range;\n        var searchParams = url.searchParams;\n        searchParams.set('alt', 'json');\n        if (!options.onlyColumnNames) {\n            searchParams.set('dateTimeRenderOption', 'FORMATTED_STRING');\n            searchParams.set('majorDimension', 'COLUMNS');\n            searchParams.set('valueRenderOption', 'UNFORMATTED_VALUE');\n        }\n        searchParams.set('prettyPrint', 'false');\n        searchParams.set('key', apiKey);\n        return url.href;\n    }\n    GoogleSheetsConnector.buildFetchURL = buildFetchURL;\n    /**\n     * Creates sheets range.\n     * @private\n     */\n    function buildQueryRange(options) {\n        if (options === void 0) { options = {}; }\n        var endColumn = options.endColumn,\n            endRow = options.endRow,\n            googleSpreadsheetRange = options.googleSpreadsheetRange,\n            startColumn = options.startColumn,\n            startRow = options.startRow;\n        return googleSpreadsheetRange || ((alphabet[startColumn || 0] || 'A') +\n            (Math.max((startRow || 0), 0) + 1) +\n            ':' +\n            (alphabet[GoogleSheetsConnector_pick(endColumn, 25)] || 'Z') +\n            (endRow ?\n                Math.max(endRow, 0) :\n                'Z'));\n    }\n    GoogleSheetsConnector.buildQueryRange = buildQueryRange;\n})(GoogleSheetsConnector || (GoogleSheetsConnector = {}));\nConnectors_DataConnector.registerType('GoogleSheets', GoogleSheetsConnector);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Connectors_GoogleSheetsConnector = ((/* unused pure expression or super */ null && (GoogleSheetsConnector)));\n\n;// ./code/es5/es-modules/Data/Converters/HTMLTableConverter.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Torstein Hønsi\n *  - Gøran Slettemark\n *  - Wojciech Chmiel\n *  - Sophie Bremer\n *\n * */\n\nvar HTMLTableConverter_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar HTMLTableConverter_assign = (undefined && undefined.__assign) || function () {\n    HTMLTableConverter_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return HTMLTableConverter_assign.apply(this, arguments);\n};\n\n\nvar HTMLTableConverter_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Row equal\n */\nfunction isRowEqual(row1, row2) {\n    var i = row1.length;\n    if (row2.length === i) {\n        while (--i) {\n            if (row1[i] !== row2[i]) {\n                return false;\n            }\n        }\n    }\n    else {\n        return false;\n    }\n    return true;\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * Handles parsing and transformation of an HTML table to a table.\n *\n * @private\n */\nvar HTMLTableConverter = /** @class */ (function (_super) {\n    HTMLTableConverter_extends(HTMLTableConverter, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the HTMLTableConverter.\n     *\n     * @param {HTMLTableConverter.UserOptions} [options]\n     * Options for the HTMLTableConverter.\n     */\n    function HTMLTableConverter(options) {\n        var _this = this;\n        var mergedOptions = HTMLTableConverter_merge(HTMLTableConverter.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        _this.columns = [];\n        _this.headers = [];\n        _this.options = mergedOptions;\n        if (mergedOptions.tableElement) {\n            _this.tableElement = mergedOptions.tableElement;\n            _this.tableElementID = mergedOptions.tableElement.id;\n        }\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Exports the dataconnector as an HTML string, using the options\n     * provided on import unless other options are provided.\n     *\n     * @param {DataConnector} connector\n     * Connector instance to export from.\n     *\n     * @param {HTMLTableConnector.ExportOptions} [options]\n     * Options that override default or existing export options.\n     *\n     * @return {string}\n     * HTML from the current dataTable.\n     */\n    HTMLTableConverter.prototype.export = function (connector, options) {\n        if (options === void 0) { options = this.options; }\n        var exportNames = (options.firstRowAsNames !== false),\n            useMultiLevelHeaders = options.useMultiLevelHeaders;\n        var columns = connector.getSortedColumns(options.usePresentationOrder),\n            columnNames = Object.keys(columns),\n            htmlRows = [],\n            columnsCount = columnNames.length;\n        var rowArray = [];\n        var tableHead = '';\n        // Add the names as the first row if they should be exported\n        if (exportNames) {\n            var subcategories = [];\n            // If using multilevel headers, the first value\n            // of each column is a subcategory\n            if (useMultiLevelHeaders) {\n                for (var _i = 0, columnNames_1 = columnNames; _i < columnNames_1.length; _i++) {\n                    var name_1 = columnNames_1[_i];\n                    var subhead = (columns[name_1].shift() || '').toString();\n                    subcategories.push(subhead);\n                }\n                tableHead = this.getTableHeaderHTML(columnNames, subcategories, options);\n            }\n            else {\n                tableHead = this.getTableHeaderHTML(void 0, columnNames, options);\n            }\n        }\n        for (var columnIndex = 0; columnIndex < columnsCount; columnIndex++) {\n            var columnName = columnNames[columnIndex],\n                column = columns[columnName],\n                columnLength = column.length;\n            for (var rowIndex = 0; rowIndex < columnLength; rowIndex++) {\n                var cellValue = column[rowIndex];\n                if (!rowArray[rowIndex]) {\n                    rowArray[rowIndex] = [];\n                }\n                // Alternative: Datatype from HTML attribute with\n                // connector.whatIs(columnName)\n                if (!(typeof cellValue === 'string' ||\n                    typeof cellValue === 'number' ||\n                    typeof cellValue === 'undefined')) {\n                    cellValue = (cellValue || '').toString();\n                }\n                rowArray[rowIndex][columnIndex] = this.getCellHTMLFromValue(columnIndex ? 'td' : 'th', null, columnIndex ? '' : 'scope=\"row\"', cellValue);\n                // On the final column, push the row to the array\n                if (columnIndex === columnsCount - 1) {\n                    htmlRows.push('<tr>' +\n                        rowArray[rowIndex].join('') +\n                        '</tr>');\n                }\n            }\n        }\n        var caption = '';\n        // Add table caption\n        // Current exportdata falls back to chart title\n        // but that should probably be handled elsewhere?\n        if (options.tableCaption) {\n            caption = '<caption class=\"highcharts-table-caption\">' +\n                options.tableCaption +\n                '</caption>';\n        }\n        return ('<table>' +\n            caption +\n            tableHead +\n            '<tbody>' +\n            htmlRows.join('') +\n            '</tbody>' +\n            '</table>');\n    };\n    /**\n     * Get table cell markup from row data.\n     */\n    HTMLTableConverter.prototype.getCellHTMLFromValue = function (tag, classes, attrs, value, decimalPoint) {\n        var val = value,\n            className = 'text' + (classes ? ' ' + classes : '');\n        // Convert to string if number\n        if (typeof val === 'number') {\n            val = val.toString();\n            if (decimalPoint === ',') {\n                val = val.replace('.', decimalPoint);\n            }\n            className = 'number';\n        }\n        else if (!value) {\n            val = '';\n            className = 'empty';\n        }\n        return '<' + tag + (attrs ? ' ' + attrs : '') +\n            ' class=\"' + className + '\">' +\n            val + '</' + tag + '>';\n    };\n    /**\n     * Get table header markup from row data.\n     */\n    HTMLTableConverter.prototype.getTableHeaderHTML = function (topheaders, subheaders, options) {\n        if (topheaders === void 0) { topheaders = []; }\n        if (subheaders === void 0) { subheaders = []; }\n        if (options === void 0) { options = this.options; }\n        var useMultiLevelHeaders = options.useMultiLevelHeaders,\n            useRowspanHeaders = options.useRowspanHeaders;\n        var html = '<thead>',\n            i = 0,\n            len = subheaders && subheaders.length,\n            next,\n            cur,\n            curColspan = 0,\n            rowspan;\n        // Clean up multiple table headers. Chart.getDataRows() returns two\n        // levels of headers when using multilevel, not merged. We need to\n        // merge identical headers, remove redundant headers, and keep it\n        // all marked up nicely.\n        if (useMultiLevelHeaders &&\n            topheaders &&\n            subheaders &&\n            !isRowEqual(topheaders, subheaders)) {\n            html += '<tr>';\n            for (; i < len; ++i) {\n                cur = topheaders[i];\n                next = topheaders[i + 1];\n                if (cur === next) {\n                    ++curColspan;\n                }\n                else if (curColspan) {\n                    // Ended colspan\n                    // Add cur to HTML with colspan.\n                    html += this.getCellHTMLFromValue('th', 'highcharts-table-topheading', 'scope=\"col\" ' +\n                        'colspan=\"' + (curColspan + 1) + '\"', cur);\n                    curColspan = 0;\n                }\n                else {\n                    // Cur is standalone. If it is same as sublevel,\n                    // remove sublevel and add just toplevel.\n                    if (cur === subheaders[i]) {\n                        if (useRowspanHeaders) {\n                            rowspan = 2;\n                            delete subheaders[i];\n                        }\n                        else {\n                            rowspan = 1;\n                            subheaders[i] = '';\n                        }\n                    }\n                    else {\n                        rowspan = 1;\n                    }\n                    html += this.getCellHTMLFromValue('th', 'highcharts-table-topheading', 'scope=\"col\"' +\n                        (rowspan > 1 ?\n                            ' valign=\"top\" rowspan=\"' + rowspan + '\"' :\n                            ''), cur);\n                }\n            }\n            html += '</tr>';\n        }\n        // Add the subheaders (the only headers if not using multilevels)\n        if (subheaders) {\n            html += '<tr>';\n            for (i = 0, len = subheaders.length; i < len; ++i) {\n                if (typeof subheaders[i] !== 'undefined') {\n                    html += this.getCellHTMLFromValue('th', null, 'scope=\"col\"', subheaders[i]);\n                }\n            }\n            html += '</tr>';\n        }\n        html += '</thead>';\n        return html;\n    };\n    /**\n     * Initiates the parsing of the HTML table\n     *\n     * @param {HTMLTableConverter.UserOptions}[options]\n     * Options for the parser\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits CSVDataParser#parse\n     * @emits CSVDataParser#afterParse\n     * @emits HTMLTableParser#parseError\n     */\n    HTMLTableConverter.prototype.parse = function (options, eventDetail) {\n        var converter = this,\n            columns = [],\n            headers = [],\n            parseOptions = HTMLTableConverter_merge(converter.options,\n            options),\n            endRow = parseOptions.endRow,\n            startColumn = parseOptions.startColumn,\n            endColumn = parseOptions.endColumn,\n            firstRowAsNames = parseOptions.firstRowAsNames,\n            tableHTML = parseOptions.tableElement || this.tableElement;\n        if (!(tableHTML instanceof HTMLElement)) {\n            converter.emit({\n                type: 'parseError',\n                columns: columns,\n                detail: eventDetail,\n                headers: headers,\n                error: 'Not a valid HTML Table'\n            });\n            return;\n        }\n        converter.tableElement = tableHTML;\n        converter.tableElementID = tableHTML.id;\n        this.emit({\n            type: 'parse',\n            columns: converter.columns,\n            detail: eventDetail,\n            headers: converter.headers\n        });\n        var rows = tableHTML.getElementsByTagName('tr'),\n            rowsCount = rows.length;\n        var rowIndex = 0,\n            item,\n            startRow = parseOptions.startRow;\n        // Insert headers from the first row\n        if (firstRowAsNames && rowsCount) {\n            var items = rows[0].children,\n                itemsLength = items.length;\n            for (var i = startColumn; i < itemsLength; i++) {\n                if (i > endColumn) {\n                    break;\n                }\n                item = items[i];\n                if (item.tagName === 'TD' ||\n                    item.tagName === 'TH') {\n                    headers.push(item.innerHTML);\n                }\n            }\n            startRow++;\n        }\n        while (rowIndex < rowsCount) {\n            if (rowIndex >= startRow && rowIndex <= endRow) {\n                var columnsInRow = rows[rowIndex].children,\n                    columnsInRowLength = columnsInRow.length;\n                var columnIndex = 0;\n                while (columnIndex < columnsInRowLength) {\n                    var relativeColumnIndex = columnIndex - startColumn,\n                        row = columns[relativeColumnIndex];\n                    item = columnsInRow[columnIndex];\n                    if ((item.tagName === 'TD' ||\n                        item.tagName === 'TH') &&\n                        (columnIndex >= startColumn &&\n                            columnIndex <= endColumn)) {\n                        if (!columns[relativeColumnIndex]) {\n                            columns[relativeColumnIndex] = [];\n                        }\n                        var cellValue = converter.asGuessedType(item.innerHTML);\n                        if (cellValue instanceof Date) {\n                            cellValue = cellValue.getTime();\n                        }\n                        columns[relativeColumnIndex][rowIndex - startRow] = cellValue;\n                        // Loop over all previous indices and make sure\n                        // they are nulls, not undefined.\n                        var i = 1;\n                        while (rowIndex - startRow >= i &&\n                            row[rowIndex - startRow - i] === void 0) {\n                            row[rowIndex - startRow - i] = null;\n                            i++;\n                        }\n                    }\n                    columnIndex++;\n                }\n            }\n            rowIndex++;\n        }\n        this.columns = columns;\n        this.headers = headers;\n        this.emit({\n            type: 'afterParse',\n            columns: columns,\n            detail: eventDetail,\n            headers: headers\n        });\n    };\n    /**\n     * Handles converting the parsed data to a table.\n     *\n     * @return {DataTable}\n     * Table from the parsed HTML table\n     */\n    HTMLTableConverter.prototype.getTable = function () {\n        return Converters_DataConverter.getTableFromColumns(this.columns, this.headers);\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options\n     */\n    HTMLTableConverter.defaultOptions = HTMLTableConverter_assign(HTMLTableConverter_assign({}, Converters_DataConverter.defaultOptions), { useRowspanHeaders: true, useMultiLevelHeaders: true });\n    return HTMLTableConverter;\n}(Converters_DataConverter));\nConverters_DataConverter.registerType('HTMLTable', HTMLTableConverter);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Converters_HTMLTableConverter = (HTMLTableConverter);\n\n;// ./code/es5/es-modules/Data/Connectors/HTMLTableConnector.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Torstein Hønsi\n *  - Gøran Slettemark\n *  - Wojciech Chmiel\n *  - Sophie Bremer\n *\n * */\n\nvar HTMLTableConnector_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\n\nvar HTMLTableConnector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Class that handles creating a data connector from an HTML table.\n *\n * @private\n */\nvar HTMLTableConnector = /** @class */ (function (_super) {\n    HTMLTableConnector_extends(HTMLTableConnector, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of HTMLTableConnector.\n     *\n     * @param {HTMLTableConnector.UserOptions} [options]\n     * Options for the connector and converter.\n     */\n    function HTMLTableConnector(options) {\n        var _this = this;\n        var mergedOptions = HTMLTableConnector_merge(HTMLTableConnector.defaultOptions,\n            options);\n        _this = _super.call(this, mergedOptions) || this;\n        _this.converter = new Converters_HTMLTableConverter(mergedOptions);\n        _this.options = mergedOptions;\n        return _this;\n    }\n    /**\n     * Initiates creating the dataconnector from the HTML table\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits HTMLTableConnector#load\n     * @emits HTMLTableConnector#afterLoad\n     * @emits HTMLTableConnector#loadError\n     */\n    HTMLTableConnector.prototype.load = function (eventDetail) {\n        var connector = this,\n            converter = connector.converter,\n            table = connector.table,\n            _a = connector.options,\n            dataModifier = _a.dataModifier,\n            tableHTML = _a.table;\n        connector.emit({\n            type: 'load',\n            detail: eventDetail,\n            table: table,\n            tableElement: connector.tableElement\n        });\n        var tableElement;\n        if (typeof tableHTML === 'string') {\n            connector.tableID = tableHTML;\n            tableElement = win.document.getElementById(tableHTML);\n        }\n        else {\n            tableElement = tableHTML;\n            connector.tableID = tableElement.id;\n        }\n        connector.tableElement = tableElement || void 0;\n        if (!connector.tableElement) {\n            var error = 'HTML table not provided, or element with ID not found';\n            connector.emit({\n                type: 'loadError',\n                detail: eventDetail,\n                error: error,\n                table: table\n            });\n            return Promise.reject(new Error(error));\n        }\n        converter.parse(HTMLTableConnector_merge({ tableElement: connector.tableElement }, connector.options), eventDetail);\n        // If already loaded, clear the current rows\n        table.deleteColumns();\n        table.setColumns(converter.getTable().getColumns());\n        return connector\n            .setModifierOptions(dataModifier)\n            .then(function () {\n            connector.emit({\n                type: 'afterLoad',\n                detail: eventDetail,\n                table: table,\n                tableElement: connector.tableElement\n            });\n            return connector;\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    HTMLTableConnector.defaultOptions = {\n        table: ''\n    };\n    return HTMLTableConnector;\n}(Connectors_DataConnector));\nConnectors_DataConnector.registerType('HTMLTable', HTMLTableConnector);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Connectors_HTMLTableConnector = ((/* unused pure expression or super */ null && (HTMLTableConnector)));\n\n;// ./code/es5/es-modules/Data/Modifiers/ChainModifier.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Dawid Dragula\n *\n * */\n\nvar ChainModifier_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n    var _ = { label: 0,\n        sent: function() { if (t[0] & 1) throw t[1]; return t[1]; },\n        trys: [],\n        ops: [] },\n        f,\n        y,\n        t,\n        g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n\n\nvar ChainModifier_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Modifies a table with the help of modifiers in an ordered chain.\n *\n */\nvar ChainModifier = /** @class */ (function (_super) {\n    ChainModifier_extends(ChainModifier, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the modifier chain.\n     *\n     * @param {Partial<ChainModifier.Options>} [options]\n     * Options to configure the modifier chain.\n     *\n     * @param {...DataModifier} [chain]\n     * Ordered chain of modifiers.\n     */\n    function ChainModifier(options) {\n        var chain = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            chain[_i - 1] = arguments[_i];\n        }\n        var _this = _super.call(this) || this;\n        _this.chain = chain;\n        _this.options = ChainModifier_merge(ChainModifier.defaultOptions, options);\n        var optionsChain = _this.options.chain || [];\n        for (var i = 0, iEnd = optionsChain.length, modifierOptions = void 0, ModifierClass = void 0; i < iEnd; ++i) {\n            modifierOptions = optionsChain[i];\n            if (!modifierOptions.type) {\n                continue;\n            }\n            ModifierClass = Modifiers_DataModifier.types[modifierOptions.type];\n            if (ModifierClass) {\n                chain.push(new ModifierClass(modifierOptions));\n            }\n        }\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Adds a configured modifier to the end of the modifier chain. Please note,\n     * that the modifier can be added multiple times.\n     *\n     * @param {DataModifier} modifier\n     * Configured modifier to add.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     */\n    ChainModifier.prototype.add = function (modifier, eventDetail) {\n        this.emit({\n            type: 'addModifier',\n            detail: eventDetail,\n            modifier: modifier\n        });\n        this.chain.push(modifier);\n        this.emit({\n            type: 'addModifier',\n            detail: eventDetail,\n            modifier: modifier\n        });\n    };\n    /**\n     * Clears all modifiers from the chain.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     */\n    ChainModifier.prototype.clear = function (eventDetail) {\n        this.emit({\n            type: 'clearChain',\n            detail: eventDetail\n        });\n        this.chain.length = 0;\n        this.emit({\n            type: 'afterClearChain',\n            detail: eventDetail\n        });\n    };\n    /**\n     * Applies several modifications to the table and returns a modified copy of\n     * the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Table to modify.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Promise<Highcharts.DataTable>}\n     * Table with `modified` property as a reference.\n     */\n    ChainModifier.prototype.modify = function (table, eventDetail) {\n        return __awaiter(this, void 0, void 0, function () {\n            var modifiers,\n                modified,\n                i,\n                iEnd,\n                error_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        modifiers = (this.options.reverse ?\n                            this.chain.slice().reverse() :\n                            this.chain.slice());\n                        if (table.modified === table) {\n                            table.modified = table.clone(false, eventDetail);\n                        }\n                        modified = table;\n                        i = 0, iEnd = modifiers.length;\n                        _a.label = 1;\n                    case 1:\n                        if (!(i < iEnd)) return [3 /*break*/, 7];\n                        _a.label = 2;\n                    case 2:\n                        _a.trys.push([2, 4, , 5]);\n                        return [4 /*yield*/, modifiers[i].modify(modified, eventDetail)];\n                    case 3:\n                        _a.sent();\n                        return [3 /*break*/, 5];\n                    case 4:\n                        error_1 = _a.sent();\n                        this.emit({\n                            type: 'error',\n                            detail: eventDetail,\n                            table: table\n                        });\n                        throw error_1;\n                    case 5:\n                        modified = modified.modified;\n                        _a.label = 6;\n                    case 6:\n                        ++i;\n                        return [3 /*break*/, 1];\n                    case 7:\n                        table.modified = modified;\n                        return [2 /*return*/, table];\n                }\n            });\n        });\n    };\n    /**\n     * Applies partial modifications of a cell change to the property `modified`\n     * of the given modified table.\n     *\n     * *Note:* The `modified` property of the table gets replaced.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {string} columnName\n     * Column name of changed cell.\n     *\n     * @param {number|undefined} rowIndex\n     * Row index of changed cell.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Changed cell value.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    ChainModifier.prototype.modifyCell = function (table, columnName, rowIndex, cellValue, eventDetail) {\n        var modifiers = (this.options.reverse ?\n                this.chain.reverse() :\n                this.chain);\n        if (modifiers.length) {\n            var clone = table.clone();\n            for (var i = 0, iEnd = modifiers.length; i < iEnd; ++i) {\n                modifiers[i].modifyCell(clone, columnName, rowIndex, cellValue, eventDetail);\n                clone = clone.modified;\n            }\n            table.modified = clone;\n        }\n        return table;\n    };\n    /**\n     * Applies partial modifications of column changes to the property\n     * `modified` of the given table.\n     *\n     * *Note:* The `modified` property of the table gets replaced.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Changed columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex=0]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    ChainModifier.prototype.modifyColumns = function (table, columns, rowIndex, eventDetail) {\n        var modifiers = (this.options.reverse ?\n                this.chain.reverse() :\n                this.chain.slice());\n        if (modifiers.length) {\n            var clone = table.clone();\n            for (var i = 0, iEnd = modifiers.length; i < iEnd; ++i) {\n                modifiers[i].modifyColumns(clone, columns, rowIndex, eventDetail);\n                clone = clone.modified;\n            }\n            table.modified = clone;\n        }\n        return table;\n    };\n    /**\n     * Applies partial modifications of row changes to the property `modified`\n     * of the given table.\n     *\n     * *Note:* The `modified` property of the table gets replaced.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Array<(Highcharts.DataTableRow|Highcharts.DataTableRowObject)>} rows\n     * Changed rows.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    ChainModifier.prototype.modifyRows = function (table, rows, rowIndex, eventDetail) {\n        var modifiers = (this.options.reverse ?\n                this.chain.reverse() :\n                this.chain.slice());\n        if (modifiers.length) {\n            var clone = table.clone();\n            for (var i = 0, iEnd = modifiers.length; i < iEnd; ++i) {\n                modifiers[i].modifyRows(clone, rows, rowIndex, eventDetail);\n                clone = clone.modified;\n            }\n            table.modified = clone;\n        }\n        return table;\n    };\n    /**\n     * Applies several modifications to the table.\n     *\n     * *Note:* The `modified` property of the table gets replaced.\n     *\n     * @param {DataTable} table\n     * Table to modify.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {DataTable}\n     * Table as a reference.\n     *\n     * @emits ChainDataModifier#execute\n     * @emits ChainDataModifier#afterExecute\n     */\n    ChainModifier.prototype.modifyTable = function (table, eventDetail) {\n        var chain = this;\n        chain.emit({\n            type: 'modify',\n            detail: eventDetail,\n            table: table\n        });\n        var modifiers = (chain.options.reverse ?\n                chain.chain.reverse() :\n                chain.chain.slice());\n        var modified = table.modified;\n        for (var i = 0, iEnd = modifiers.length, modifier = void 0; i < iEnd; ++i) {\n            modifier = modifiers[i];\n            modified = modifier.modifyTable(modified, eventDetail).modified;\n        }\n        table.modified = modified;\n        chain.emit({\n            type: 'afterModify',\n            detail: eventDetail,\n            table: table\n        });\n        return table;\n    };\n    /**\n     * Removes a configured modifier from all positions in the modifier chain.\n     *\n     * @param {DataModifier} modifier\n     * Configured modifier to remove.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     */\n    ChainModifier.prototype.remove = function (modifier, eventDetail) {\n        var modifiers = this.chain;\n        this.emit({\n            type: 'removeModifier',\n            detail: eventDetail,\n            modifier: modifier\n        });\n        modifiers.splice(modifiers.indexOf(modifier), 1);\n        this.emit({\n            type: 'afterRemoveModifier',\n            detail: eventDetail,\n            modifier: modifier\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default option for the ordered modifier chain.\n     */\n    ChainModifier.defaultOptions = {\n        type: 'Chain'\n    };\n    return ChainModifier;\n}(Modifiers_DataModifier));\nModifiers_DataModifier.registerType('Chain', ChainModifier);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Modifiers_ChainModifier = ((/* unused pure expression or super */ null && (ChainModifier)));\n\n;// ./code/es5/es-modules/Data/Modifiers/InvertModifier.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Wojciech Chmiel\n *  - Sophie Bremer\n *\n * */\n\nvar InvertModifier_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar InvertModifier_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Inverts columns and rows in a table.\n *\n * @private\n */\nvar InvertModifier = /** @class */ (function (_super) {\n    InvertModifier_extends(InvertModifier, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the invert modifier.\n     *\n     * @param {Partial<InvertModifier.Options>} [options]\n     * Options to configure the invert modifier.\n     */\n    function InvertModifier(options) {\n        var _this = _super.call(this) || this;\n        _this.options = InvertModifier_merge(InvertModifier.defaultOptions, options);\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Applies partial modifications of a cell change to the property `modified`\n     * of the given modified table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {string} columnName\n     * Column name of changed cell.\n     *\n     * @param {number|undefined} rowIndex\n     * Row index of changed cell.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Changed cell value.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    InvertModifier.prototype.modifyCell = function (table, columnName, rowIndex, cellValue, eventDetail) {\n        var modified = table.modified,\n            modifiedRowIndex = modified.getRowIndexBy('columnNames',\n            columnName);\n        if (typeof modifiedRowIndex === 'undefined') {\n            modified.setColumns(this.modifyTable(table.clone()).getColumns(), void 0, eventDetail);\n        }\n        else {\n            modified.setCell(\"\".concat(rowIndex), modifiedRowIndex, cellValue, eventDetail);\n        }\n        return table;\n    };\n    /**\n     * Applies partial modifications of column changes to the property\n     * `modified` of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Changed columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex=0]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    InvertModifier.prototype.modifyColumns = function (table, columns, rowIndex, eventDetail) {\n        var modified = table.modified,\n            modifiedColumnNames = (modified.getColumn('columnNames') || []);\n        var columnNames = table.getColumnNames(),\n            reset = (table.getRowCount() !== modifiedColumnNames.length);\n        if (!reset) {\n            for (var i = 0, iEnd = columnNames.length; i < iEnd; ++i) {\n                if (columnNames[i] !== modifiedColumnNames[i]) {\n                    reset = true;\n                    break;\n                }\n            }\n        }\n        if (reset) {\n            return this.modifyTable(table, eventDetail);\n        }\n        columnNames = Object.keys(columns);\n        for (var i = 0, iEnd = columnNames.length, column = void 0, columnName = void 0, modifiedRowIndex = void 0; i < iEnd; ++i) {\n            columnName = columnNames[i];\n            column = columns[columnName];\n            modifiedRowIndex = (modified.getRowIndexBy('columnNames', columnName) ||\n                modified.getRowCount());\n            for (var j = 0, j2 = rowIndex, jEnd = column.length; j < jEnd; ++j, ++j2) {\n                modified.setCell(\"\".concat(j2), modifiedRowIndex, column[j], eventDetail);\n            }\n        }\n        return table;\n    };\n    /**\n     * Applies partial modifications of row changes to the property `modified`\n     * of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Array<(Highcharts.DataTableRow|Highcharts.DataTableRowObject)>} rows\n     * Changed rows.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    InvertModifier.prototype.modifyRows = function (table, rows, rowIndex, eventDetail) {\n        var columnNames = table.getColumnNames(),\n            modified = table.modified,\n            modifiedColumnNames = (modified.getColumn('columnNames') || []);\n        var reset = (table.getRowCount() !== modifiedColumnNames.length);\n        if (!reset) {\n            for (var i = 0, iEnd = columnNames.length; i < iEnd; ++i) {\n                if (columnNames[i] !== modifiedColumnNames[i]) {\n                    reset = true;\n                    break;\n                }\n            }\n        }\n        if (reset) {\n            return this.modifyTable(table, eventDetail);\n        }\n        for (var i = 0, i2 = rowIndex, iEnd = rows.length, row = void 0; i < iEnd; ++i, ++i2) {\n            row = rows[i];\n            if (row instanceof Array) {\n                modified.setColumn(\"\".concat(i2), row);\n            }\n            else {\n                for (var j = 0, jEnd = columnNames.length; j < jEnd; ++j) {\n                    modified.setCell(\"\".concat(i2), j, row[columnNames[j]], eventDetail);\n                }\n            }\n        }\n        return table;\n    };\n    /**\n     * Inverts rows and columns in the table.\n     *\n     * @param {DataTable} table\n     * Table to invert.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {DataTable}\n     * Table with inverted `modified` property as a reference.\n     */\n    InvertModifier.prototype.modifyTable = function (table, eventDetail) {\n        var modifier = this;\n        modifier.emit({ type: 'modify', detail: eventDetail, table: table });\n        var modified = table.modified;\n        if (table.hasColumns(['columnNames'])) { // Inverted table\n            var columnNames = ((table.deleteColumns(['columnNames']) || {})\n                    .columnNames || []).map(function (column) { return \"\".concat(column); }),\n                columns = {};\n            for (var i = 0, iEnd = table.getRowCount(), row = void 0; i < iEnd; ++i) {\n                row = table.getRow(i);\n                if (row) {\n                    columns[columnNames[i]] = row;\n                }\n            }\n            modified.deleteColumns();\n            modified.setColumns(columns);\n        }\n        else { // Regular table\n            var columns = {};\n            for (var i = 0, iEnd = table.getRowCount(), row = void 0; i < iEnd; ++i) {\n                row = table.getRow(i);\n                if (row) {\n                    columns[\"\".concat(i)] = row;\n                }\n            }\n            columns.columnNames = table.getColumnNames();\n            modified.deleteColumns();\n            modified.setColumns(columns);\n        }\n        modifier.emit({ type: 'afterModify', detail: eventDetail, table: table });\n        return table;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options for the invert modifier.\n     */\n    InvertModifier.defaultOptions = {\n        type: 'Invert'\n    };\n    return InvertModifier;\n}(Modifiers_DataModifier));\nModifiers_DataModifier.registerType('Invert', InvertModifier);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Modifiers_InvertModifier = ((/* unused pure expression or super */ null && (InvertModifier)));\n\n;// ./code/es5/es-modules/Data/Modifiers/MathModifier.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *\n * */\n\nvar MathModifier_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MathModifier_assign = (undefined && undefined.__assign) || function () {\n    MathModifier_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return MathModifier_assign.apply(this, arguments);\n};\n\n\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * Replaces formula strings in a table with calculated values.\n *\n * @class\n * @name Highcharts.DataModifier.types.MathModifier\n * @augments Highcharts.DataModifier\n */\nvar MathModifier = /** @class */ (function (_super) {\n    MathModifier_extends(MathModifier, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function MathModifier(options) {\n        var _this = _super.call(this) || this;\n        _this.options = MathModifier_assign(MathModifier_assign({}, MathModifier.defaultOptions), options);\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    MathModifier.prototype.modifyTable = function (table, eventDetail) {\n        var modifier = this;\n        modifier.emit({ type: 'modify', detail: eventDetail, table: table });\n        var alternativeSeparators = modifier.options.alternativeSeparators,\n            formulaColumns = (modifier.options.formulaColumns ||\n                table.getColumnNames()),\n            modified = table.modified;\n        for (var i = 0, iEnd = formulaColumns.length, columnName = void 0; i < iEnd; ++i) {\n            columnName = formulaColumns[i];\n            if (formulaColumns.indexOf(columnName) >= 0) {\n                modified.setColumn(columnName, modifier.processColumn(table, columnName));\n            }\n        }\n        var columnFormulas = (modifier.options.columnFormulas || []);\n        for (var i = 0, iEnd = columnFormulas.length, columnFormula = void 0, formula = void 0; i < iEnd; ++i) {\n            columnFormula = columnFormulas[i];\n            formula = Formula_FormulaParser.parseFormula(columnFormula.formula, alternativeSeparators);\n            modified.setColumn(columnFormula.column, modifier.processColumnFormula(formula, table, columnFormula.rowStart, columnFormula.rowEnd));\n        }\n        modifier.emit({ type: 'afterModify', detail: eventDetail, table: table });\n        return table;\n    };\n    /**\n     * Process a column by replacing formula strings with calculated values.\n     *\n     * @private\n     *\n     * @param {Highcharts.DataTable} table\n     * Table to extract column from and use as reference.\n     *\n     * @param {string} columnName\n     * Name of column to process.\n     *\n     * @param {number} rowIndex\n     * Row index to start the replacing process from.\n     *\n     * @return {Highcharts.DataTableColumn}\n     * Returns the processed table column.\n     */\n    MathModifier.prototype.processColumn = function (table, columnName, rowIndex) {\n        if (rowIndex === void 0) { rowIndex = 0; }\n        var alternativeSeparators = this.options.alternativeSeparators,\n            column = (table.getColumn(columnName,\n            true) || [])\n                .slice(rowIndex > 0 ? rowIndex : 0);\n        for (var i = 0, iEnd = column.length, cacheFormula = [], cacheString = '', cell = void 0; i < iEnd; ++i) {\n            cell = column[i];\n            if (typeof cell === 'string' &&\n                cell[0] === '=') {\n                try {\n                    // Use cache while formula string is repetitive\n                    cacheFormula = (cacheString === cell ?\n                        cacheFormula :\n                        Formula_FormulaParser.parseFormula(cell.substring(1), alternativeSeparators));\n                    // Process parsed formula string\n                    column[i] =\n                        Formula_FormulaProcessor.processFormula(cacheFormula, table);\n                }\n                catch (_a) {\n                    column[i] = NaN;\n                }\n            }\n        }\n        return column;\n    };\n    /**\n     * Process a column by replacing cell values with calculated values from a\n     * given formula.\n     *\n     * @private\n     *\n     * @param {Highcharts.Formula} formula\n     * Formula to use for processing.\n     *\n     * @param {Highcharts.DataTable} table\n     * Table to extract column from and use as reference.\n     *\n     * @param {number} rowStart\n     * Row index to start the replacing process from.\n     *\n     * @param {number} rowEnd\n     * Row index to end the replacing process.\n     *\n     * @return {Highcharts.DataTableColumn}\n     * Returns the processed table column.\n     */\n    MathModifier.prototype.processColumnFormula = function (formula, table, rowStart, rowEnd) {\n        if (rowStart === void 0) { rowStart = 0; }\n        if (rowEnd === void 0) { rowEnd = table.getRowCount(); }\n        rowStart = rowStart >= 0 ? rowStart : 0;\n        rowEnd = rowEnd >= 0 ? rowEnd : table.getRowCount() + rowEnd;\n        var column = [],\n            modified = table.modified;\n        for (var i = 0, iEnd = (rowEnd - rowStart); i < iEnd; ++i) {\n            try {\n                column[i] = Formula_FormulaProcessor.processFormula(formula, modified);\n            }\n            catch (_a) {\n                column[i] = NaN;\n            }\n            finally {\n                formula = Formula_FormulaProcessor.translateReferences(formula, 0, 1);\n            }\n        }\n        return column;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options of MathModifier.\n     * @private\n     */\n    MathModifier.defaultOptions = {\n        type: 'Math',\n        alternativeSeparators: false\n    };\n    return MathModifier;\n}(Modifiers_DataModifier));\nModifiers_DataModifier.registerType('Math', MathModifier);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Modifiers_MathModifier = ((/* unused pure expression or super */ null && (MathModifier)));\n\n;// ./code/es5/es-modules/Data/Modifiers/RangeModifier.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Dawid Dragula\n *\n * */\n\nvar RangeModifier_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar RangeModifier_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Filters out table rows with a specific value range.\n *\n */\nvar RangeModifier = /** @class */ (function (_super) {\n    RangeModifier_extends(RangeModifier, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the range modifier.\n     *\n     * @param {Partial<RangeModifier.Options>} [options]\n     * Options to configure the range modifier.\n     */\n    function RangeModifier(options) {\n        var _this = _super.call(this) || this;\n        _this.options = RangeModifier_merge(RangeModifier.defaultOptions, options);\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Replaces table rows with filtered rows.\n     *\n     * @param {DataTable} table\n     * Table to modify.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {DataTable}\n     * Table with `modified` property as a reference.\n     */\n    RangeModifier.prototype.modifyTable = function (table, eventDetail) {\n        var modifier = this;\n        modifier.emit({ type: 'modify', detail: eventDetail, table: table });\n        var indexes = [];\n        var _a = modifier.options,\n            additive = _a.additive,\n            ranges = _a.ranges,\n            strict = _a.strict;\n        if (ranges.length) {\n            var modified = table.modified;\n            var columns = table.getColumns(),\n                rows = [];\n            for (var i = 0, iEnd = ranges.length, range = void 0, rangeColumn = void 0; i < iEnd; ++i) {\n                range = ranges[i];\n                if (strict &&\n                    typeof range.minValue !== typeof range.maxValue) {\n                    continue;\n                }\n                if (i > 0 && !additive) {\n                    modified.deleteRows();\n                    modified.setRows(rows);\n                    modified.setOriginalRowIndexes(indexes, true);\n                    columns = modified.getColumns();\n                    rows = [];\n                    indexes = [];\n                }\n                rangeColumn = (columns[range.column] || []);\n                for (var j = 0, jEnd = rangeColumn.length, cell = void 0, row = void 0, originalRowIndex = void 0; j < jEnd; ++j) {\n                    cell = rangeColumn[j];\n                    switch (typeof cell) {\n                        default:\n                            continue;\n                        case 'boolean':\n                        case 'number':\n                        case 'string':\n                            break;\n                    }\n                    if (strict &&\n                        typeof cell !== typeof range.minValue) {\n                        continue;\n                    }\n                    if (cell >= range.minValue &&\n                        cell <= range.maxValue) {\n                        if (additive) {\n                            row = table.getRow(j);\n                            originalRowIndex = table.getOriginalRowIndex(j);\n                        }\n                        else {\n                            row = modified.getRow(j);\n                            originalRowIndex = modified.getOriginalRowIndex(j);\n                        }\n                        if (row) {\n                            rows.push(row);\n                            indexes.push(originalRowIndex);\n                        }\n                    }\n                }\n            }\n            modified.deleteRows();\n            modified.setRows(rows);\n            modified.setOriginalRowIndexes(indexes);\n        }\n        modifier.emit({ type: 'afterModify', detail: eventDetail, table: table });\n        return table;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options for the range modifier.\n     */\n    RangeModifier.defaultOptions = {\n        type: 'Range',\n        ranges: []\n    };\n    return RangeModifier;\n}(Modifiers_DataModifier));\nModifiers_DataModifier.registerType('Range', RangeModifier);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Modifiers_RangeModifier = ((/* unused pure expression or super */ null && (RangeModifier)));\n\n;// ./code/es5/es-modules/Data/Modifiers/SortModifier.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Dawid Dragula\n *\n * */\n\nvar SortModifier_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar SortModifier_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Sort table rows according to values of a column.\n *\n */\nvar SortModifier = /** @class */ (function (_super) {\n    SortModifier_extends(SortModifier, _super);\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    /**\n     * Constructs an instance of the range modifier.\n     *\n     * @param {Partial<RangeDataModifier.Options>} [options]\n     * Options to configure the range modifier.\n     */\n    function SortModifier(options) {\n        var _this = _super.call(this) || this;\n        _this.options = SortModifier_merge(SortModifier.defaultOptions, options);\n        return _this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    SortModifier.ascending = function (a, b) {\n        return ((a || 0) < (b || 0) ? -1 :\n            (a || 0) > (b || 0) ? 1 :\n                0);\n    };\n    SortModifier.descending = function (a, b) {\n        return ((b || 0) < (a || 0) ? -1 :\n            (b || 0) > (a || 0) ? 1 :\n                0);\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Returns index and row for sort reference.\n     *\n     * @private\n     *\n     * @param {Highcharts.DataTable} table\n     * Table with rows to reference.\n     *\n     * @return {Array<SortModifier.RowReference>}\n     * Array of row references.\n     */\n    SortModifier.prototype.getRowReferences = function (table) {\n        var rows = table.getRows(),\n            rowReferences = [];\n        for (var i = 0, iEnd = rows.length; i < iEnd; ++i) {\n            rowReferences.push({\n                index: i,\n                row: rows[i]\n            });\n        }\n        return rowReferences;\n    };\n    /**\n     * Applies partial modifications of a cell change to the property `modified`\n     * of the given modified table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {string} columnName\n     * Column name of changed cell.\n     *\n     * @param {number|undefined} rowIndex\n     * Row index of changed cell.\n     *\n     * @param {Highcharts.DataTableCellType} cellValue\n     * Changed cell value.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    SortModifier.prototype.modifyCell = function (table, columnName, rowIndex, cellValue, eventDetail) {\n        var modifier = this,\n            _a = modifier.options,\n            orderByColumn = _a.orderByColumn,\n            orderInColumn = _a.orderInColumn;\n        if (columnName === orderByColumn) {\n            if (orderInColumn) {\n                table.modified.setCell(columnName, rowIndex, cellValue);\n                table.modified.setColumn(orderInColumn, modifier\n                    .modifyTable(new Data_DataTable({\n                    columns: table\n                        .getColumns([orderByColumn, orderInColumn])\n                }))\n                    .modified\n                    .getColumn(orderInColumn));\n            }\n            else {\n                modifier.modifyTable(table, eventDetail);\n            }\n        }\n        return table;\n    };\n    /**\n     * Applies partial modifications of column changes to the property\n     * `modified` of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Changed columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex=0]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    SortModifier.prototype.modifyColumns = function (table, columns, rowIndex, eventDetail) {\n        var modifier = this,\n            _a = modifier.options,\n            orderByColumn = _a.orderByColumn,\n            orderInColumn = _a.orderInColumn,\n            columnNames = Object.keys(columns);\n        if (columnNames.indexOf(orderByColumn) > -1) {\n            if (orderInColumn &&\n                columns[columnNames[0]].length) {\n                table.modified.setColumns(columns, rowIndex);\n                table.modified.setColumn(orderInColumn, modifier\n                    .modifyTable(new Data_DataTable({\n                    columns: table\n                        .getColumns([orderByColumn, orderInColumn])\n                }))\n                    .modified\n                    .getColumn(orderInColumn));\n            }\n            else {\n                modifier.modifyTable(table, eventDetail);\n            }\n        }\n        return table;\n    };\n    /**\n     * Applies partial modifications of row changes to the property `modified`\n     * of the given table.\n     *\n     * @param {Highcharts.DataTable} table\n     * Modified table.\n     *\n     * @param {Array<(Highcharts.DataTableRow|Highcharts.DataTableRowObject)>} rows\n     * Changed rows.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first changed row.\n     *\n     * @param {Highcharts.DataTableEventDetail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {Highcharts.DataTable}\n     * Table with `modified` property as a reference.\n     */\n    SortModifier.prototype.modifyRows = function (table, rows, rowIndex, eventDetail) {\n        var modifier = this,\n            _a = modifier.options,\n            orderByColumn = _a.orderByColumn,\n            orderInColumn = _a.orderInColumn;\n        if (orderInColumn &&\n            rows.length) {\n            table.modified.setRows(rows, rowIndex);\n            table.modified.setColumn(orderInColumn, modifier\n                .modifyTable(new Data_DataTable({\n                columns: table\n                    .getColumns([orderByColumn, orderInColumn])\n            }))\n                .modified\n                .getColumn(orderInColumn));\n        }\n        else {\n            modifier.modifyTable(table, eventDetail);\n        }\n        return table;\n    };\n    /**\n     * Sorts rows in the table.\n     *\n     * @param {DataTable} table\n     * Table to sort in.\n     *\n     * @param {DataEvent.Detail} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @return {DataTable}\n     * Table with `modified` property as a reference.\n     */\n    SortModifier.prototype.modifyTable = function (table, eventDetail) {\n        var _a;\n        var modifier = this;\n        modifier.emit({ type: 'modify', detail: eventDetail, table: table });\n        var columnNames = table.getColumnNames(),\n            rowCount = table.getRowCount(),\n            rowReferences = this.getRowReferences(table),\n            _b = modifier.options,\n            direction = _b.direction,\n            orderByColumn = _b.orderByColumn,\n            orderInColumn = _b.orderInColumn,\n            compare = (direction === 'asc' ?\n                SortModifier.ascending :\n                SortModifier.descending),\n            orderByColumnIndex = columnNames.indexOf(orderByColumn),\n            modified = table.modified;\n        if (orderByColumnIndex !== -1) {\n            rowReferences.sort(function (a, b) { return compare(a.row[orderByColumnIndex], b.row[orderByColumnIndex]); });\n        }\n        if (orderInColumn) {\n            var column = [];\n            for (var i = 0; i < rowCount; ++i) {\n                column[rowReferences[i].index] = i;\n            }\n            modified.setColumns((_a = {}, _a[orderInColumn] = column, _a));\n        }\n        else {\n            var originalIndexes = [];\n            var rows = [];\n            var rowReference = void 0;\n            for (var i = 0; i < rowCount; ++i) {\n                rowReference = rowReferences[i];\n                originalIndexes.push(modified.getOriginalRowIndex(rowReference.index));\n                rows.push(rowReference.row);\n            }\n            modified.setRows(rows, 0);\n            modified.setOriginalRowIndexes(originalIndexes);\n        }\n        modifier.emit({ type: 'afterModify', detail: eventDetail, table: table });\n        return table;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    /**\n     * Default options to group table rows.\n     */\n    SortModifier.defaultOptions = {\n        type: 'Sort',\n        direction: 'desc',\n        orderByColumn: 'y'\n    };\n    return SortModifier;\n}(Modifiers_DataModifier));\nModifiers_DataModifier.registerType('Sort', SortModifier);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Modifiers_SortModifier = ((/* unused pure expression or super */ null && (SortModifier)));\n\n;// ./code/es5/es-modules/masters/modules/data-tools.src.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.DataConnector = G.DataConnector || Connectors_DataConnector;\nG.DataConverter = G.DataConverter || Converters_DataConverter;\nG.DataCursor = G.DataCursor || Data_DataCursor;\nG.DataModifier = G.DataModifier || Modifiers_DataModifier;\nG.DataPool = G.DataPool || Data_DataPool;\nG.DataTable = G.DataTable || Data_DataTable;\nG.Formula = G.Formula || Formula_Formula;\n/* harmony default export */ var data_tools_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","require","define","amd","__WEBPACK_EXTERNAL_MODULE__944__","DataModifier","extendStatics","DataConnector","DataConverter","__webpack_modules__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","data_tools_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","addEvent","fireEvent","merge","benchmark","dataTable","options","results","modifier","execute","modifyTable","emit","type","iterations","on","length","times","startTime","endTime","window","performance","now","push","e","modify","table","eventDetail","Promise","resolve","reject","modified","clone","detail","modifyCell","columnName","rowIndex","cellValue","modifyColumns","columns","modifyRows","rows","callback","types","registerType","DataModifierClass","Modifiers_DataModifier","DataTableCore_fireEvent","isArray","objectEach","uniqueKey","DataTableCore","_this","autoId","id","rowCount","versionTag","column","slice","Math","max","applyRowCount","getColumn","asReference","getColumns","columnNames","keys","reduce","getRow","map","_a","setColumn","setColumns","silent","setRow","row","insert","indexRowCount","addColumns","Array","splice","__extends","b","setPrototypeOf","__proto__","p","__","constructor","create","DataTable_addEvent","defined","DataTable_fireEvent","extend","DataTable_uniqueKey","DataTable","_super","isNull","NULL","i","iEnd","skipColumns","tableOptions","tableClone","originalRowIndexes","localRowIndexes","deleteColumns","deletedColumns","modifiedColumns","deleteRowIndexReferences","deleteRows","deletedRows","modifiedRows","deletedCells","j","jEnd","includes","getCell","getCellAsBoolean","getCellAsNumber","useNaN","isNaN","parseFloat","concat","getCellAsString","getColumnAsNumbers","columnAsNumber","columnLength","getColumnNames","tableColumns","getLocalRowIndex","originalRowIndex","getModifier","getOriginalRowIndex","getRows","getRowCount","getRowIndexBy","rowIndexOffset","indexOf","getRowObject","getRowObjects","i2","min","_i","columnNames_1","columnNames_2","getVersionTag","hasColumns","hasRowWith","renameColumn","newColumnName","setCell","tableModifier","tableColumn","i_1","iEnd_1","setModifier","promise","then","error","setOriginalRowIndexes","omitLocalRowIndexes","modifiedIndexes","originalIndex","setRows","version","DataConnector_addEvent","DataConnector_fireEvent","DataConnector_merge","pick","metadata","polling","configurable","describeColumn","name","columnMeta","connector","describeColumns","pop","getColumnOrder","usePresentationState","names","sort","index","getSortedColumns","usePresentationOrder","load","save","Error","setColumnOrder","setModifierOptions","modifierOptions","ModifierClass","startPolling","refreshTime","clearTimeout","_polling","setTimeout","stopPolling","whatIs","DataConnectorClass","Connectors_DataConnector","DataConverter_addEvent","DataConverter_fireEvent","isNumber","DataConverter_merge","dateFormats","regex","parser","match","Date","UTC","NaN","alternative","year","getFullYear","mergedOptions","defaultOptions","regExpPoint","decimalPoint","decimalRegExp","RegExp","asBoolean","value","asNumber","asDate","timestamp","parseDate","asString","asGuessedType","typeMap","converter","guessType","decimalRegex","replace","test","getDate","deduceDateFormat","data","limit","thing","elem","stable","format","guessedFormat","madeDeduction","trim","split","parseInt","join","dateFormat","export","headers","getTable","result","trimedValue","innerTrimedValue","floatValue","parse","dateFormatProp","getTime","getTimezoneOffset","str","inside","alternativeFormat","startColumn","endColumn","Number","MAX_VALUE","startRow","endRow","firstRowAsNames","switchRowsAndColumns","DataConverterClass","getTableFromColumns","Converters_DataConverter","DataCursor","stateMap","emittingRegister","listenerMap","addListener","tableId","state","listener","listeners","buildEmittingTag","cursor","firstRow","lastRow","emitCursor","event","lasting","cursors","getIndex","emittingTag","remitCursor","removeListener","toRange","defaultRange","_b","_c","_d","range","needle","columnNeedle","JSON","stringify","isEqual","cursorA","cursorB","isInRange","needleColumns","rangeColumns","every","toPositions","positions","rowEnd","columnEnd","Data_DataCursor","Data_DataPoolDefaults","connectors","DataPool","waiting","getConnector","connectorId","waitingList","connectorOptions","getConnectorOptions","loadConnector","getConnectorIds","connectorIds","getConnectorTable","isNewConnector","ConnectorClass","setConnectorOptions","instances","booleanRegExp","decimal1RegExp","decimal2RegExp","functionRegExp","operatorRegExp","rangeA1RegExp","rangeR1C1RegExp","referenceA1RegExp","referenceR1C1RegExp","extractParantheses","text","parantheseLevel","char","parantheseStart","substring","extractString","start","escaping","parseArgument","alternativeSeparators","beginColumnRelative","beginRowRelative","endColumnRelative","endRowRelative","beginColumn","beginRow","parseReferenceColumn","formula","parseFormula","next","columnRelative","rowRelative","reference","string","parantheses","args","parseArguments","argumentsSeparator","term","paranteses","position","code","factor","charCodeAt","pow","Formula_FormulaParser","operators","FormulaTypes","isFormula","item","isFunction","isOperator","isRange","isReference","isValue","FormulaProcessor_isFormula","FormulaProcessor_isFunction","FormulaProcessor_isOperator","FormulaProcessor_isRange","FormulaProcessor_isReference","FormulaProcessor_isValue","asLogicalStringRegExp","MAX_FALSE","MAX_STRING","MAX_TRUE","operatorPriority","processorFunctions","processorFunctionNameRegExp","asLogicalNumber","asLogicalString","toLowerCase","basicOperation","operator","x","y","round","getArgumentValue","arg","getRangeValues","processFunction","processFormula","values","cell","cells","getReferenceValue","operator2","formulaFunction","processor","Formula_FormulaProcessor","getArgumentsValues","registerProcessorFunction","processorFunction","translateReferences","columnDelta","rowDelta","ABS_getArgumentValue","abs","value2","AND_getArgumentValue","AND","AVERAGE_getArgumentsValues","count","AVERAGEA_getArgumentValue","COUNT","COUNTA","IF_getArgumentValue","ISNA_getArgumentValue","MAX_getArgumentsValues","MAX","NEGATIVE_INFINITY","isFinite","median","half","floor","MIN_getArgumentsValues","MIN","POSITIVE_INFINITY","MOD_getArgumentValue","getModeMap","modeMap","SNGL","modeKey","modeCount","keyValue","value1","modeKeys","NOT_getArgumentValue","OR_getArgumentValue","OR","PRODUCT_getArgumentsValues","PRODUCT","calculated","SUM","XOR_getArgumentValue","lastValue","__assign","assign","t","s","arguments","apply","Formula","CSVConverter_extends","TypeError","String","CSVConverter_assign","CSVConverter_merge","CSVConverter","dataTypes","useLocalDecimalPoint","lineDelimiter","exportNames","itemDelimiter","toLocaleString","csvRows","columnsCount","rowArray","columnIndex","columnDataType","dataType","cellVal","lines","parserOptions","beforeParse","rowIt","csv","guessedItemDelimiter","guessDelimiter","offset","parseCSVRow","columnStr","rowNumber","guessedDecimalPoint","c","token","actualColumn","read","pushType","initialValue","guessed","points","commas","potDelimiters","linesCount","inStr","cn","cl","CSVConnector_extends","CSVConnector_merge","CSVConnector","enablePolling","dataRefreshRate","csvURL","dataModifier","fetch","response","JSONConverter_extends","JSONConverter_assign","JSONConverter_isArray","JSONConverter_merge","JSONConverter_objectEach","JSONConverter","orientation","shift","toString","this_1","_loop_1","newRow_1","arrayWithPath","acc","JSONConnector_extends","JSONConnector_merge","JSONConnector","dataUrl","json","GoogleSheetsConverter_extends","GoogleSheetsConverter_assign","GoogleSheetsConverter_merge","GoogleSheetsConverter_uniqueKey","GoogleSheetsConverter","header","parseOptions","GoogleSheetsConnector_extends","GoogleSheetsConnector_merge","GoogleSheetsConnector_pick","GoogleSheetsConnector","googleAPIKey","googleSpreadsheetKey","url","buildFetchURL","URL","canParse","message","status","alphabet","buildQueryRange","googleSpreadsheetRange","apiKey","sheetKey","onlyColumnNames","pathname","searchParams","set","href","HTMLTableConverter_extends","HTMLTableConverter_assign","HTMLTableConverter_merge","HTMLTableConverter","tableElement","tableElementID","useMultiLevelHeaders","htmlRows","tableHead","subcategories","subhead","getTableHeaderHTML","getCellHTMLFromValue","caption","tableCaption","tag","classes","attrs","val","className","topheaders","subheaders","cur","rowspan","useRowspanHeaders","html","len","curColspan","isRowEqual","row1","row2","tableHTML","HTMLElement","getElementsByTagName","rowsCount","items","children","itemsLength","tagName","innerHTML","columnsInRow","columnsInRowLength","relativeColumnIndex","HTMLTableConnector_extends","win","HTMLTableConnector_merge","HTMLTableConnector","tableID","document","getElementById","ChainModifier_extends","__generator","thisArg","body","f","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","step","op","done","ChainModifier_merge","ChainModifier","chain","optionsChain","add","clear","_arguments","P","generator","modifiers","error_1","reverse","fulfilled","rejected","adopt","remove","InvertModifier_extends","InvertModifier_merge","InvertModifier","modifiedRowIndex","modifiedColumnNames","reset","j2","MathModifier_extends","MathModifier_assign","MathModifier","formulaColumns","processColumn","columnFormulas","columnFormula","processColumnFormula","rowStart","cacheFormula","cacheString","RangeModifier_extends","RangeModifier_merge","RangeModifier","indexes","additive","ranges","strict","rangeColumn","minValue","maxValue","SortModifier_extends","SortModifier_merge","SortModifier","ascending","descending","getRowReferences","rowReferences","orderByColumn","orderInColumn","direction","compare","orderByColumnIndex","originalIndexes","rowReference","G"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox