/* Highcharts JS v11.1.0 (2023-06-05) Highcharts (c) 2010-2023 Highsoft AS License: www.highcharts.com/license */ 'use strict';var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(d){var k=0;return function(){return k=this.rowCount&&(this.rowCount=b+1),g[b]=e,c&&c.modifyCell(this,a,b,e),this.emit({type:"afterSetCell",cellValue:e,columnName:a,detail:l,rowIndex:b}))}setColumn(a,b=[],e=0,l){this.setColumns({[a]:b},e,l)}setColumnAlias(a,b){const e= this.aliases;return e[a]?!1:(e[a]=b,!0)}setColumns(a,b,e){const f=this.columns,n=this.modifier;var c="undefined"===typeof b;const g=Object.keys(a);this.emit({type:"setColumns",columns:a,columnNames:g,detail:e,rowIndex:b});for(let e=0,l=g.length,n,d;e{e.emit({type:"afterSetModifier",detail:b,modifier:a,modified:e.modified});return e})["catch"](b=>{e.emit({type:"setModifierError",error:b,modifier:a,modified:e.modified}); throw b;})}setRow(a,b,e){this.setRows([a],b,e)}setRows(a,f=this.rowCount,e){var l=this.aliases;const n=this.columns,c=Object.keys(n),g=this.modifier,d=a.length;this.emit({type:"setRows",detail:e,rowCount:d,rowIndex:f,rows:a});for(let e=0,g=f,t;ethis.rowCount){this.rowCount=l;for(let a=0,e=c.length;aa(b[e].index,0)-a(b[f].index,0))}getSortedColumns(a){return this.table.getColumns(this.getColumnOrder(a))}load(){g(this,"afterLoad",{table:this.table});return Promise.resolve(this)}on(a,b){return h(this,a,b)}save(){g(this, "saveError",{table:this.table});return Promise.reject(Error("Not implemented"))}setColumnOrder(a){for(let e=0,b=a.length;ee.load()["catch"](a=>e.emit({type:"loadError",error:a,table:e.table})).then(()=>{e._polling&&e.startPolling(a)}),a)}stopPolling(){window.clearTimeout(this._polling);delete this._polling}whatIs(a){return this.metadata.columns[a]}}(function(a){a.types= {};a.registerType=function(e,b){return!!e&&!a.types[e]&&!!(a.types[e]=b)}})(f||(f={}));return f});k(d,"Data/Converters/DataConverter.js",[d["Data/DataTable.js"],d["Core/Utilities.js"]],function(d,c){const {addEvent:h,fireEvent:g,isNumber:b,merge:a}=c;class f{constructor(e){this.dateFormats={"YYYY/mm/dd":{regex:/^([0-9]{4})([\-\.\/])([0-9]{1,2})\2([0-9]{1,2})$/,parser:function(a){return a?Date.UTC(+a[1],a[3]-1,+a[4]):NaN}},"dd/mm/YYYY":{regex:/^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{4})$/,parser:function(a){return a? Date.UTC(+a[4],a[3]-1,+a[1]):NaN},alternative:"mm/dd/YYYY"},"mm/dd/YYYY":{regex:/^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{4})$/,parser:function(a){return a?Date.UTC(+a[4],a[1]-1,+a[3]):NaN}},"dd/mm/YY":{regex:/^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{2})$/,parser:function(a){if(!a)return NaN;let e=+a[4];e=e>(new Date).getFullYear()-2E3?e+1900:e+2E3;return Date.UTC(e,a[3]-1,+a[1])},alternative:"mm/dd/YY"},"mm/dd/YY":{regex:/^([0-9]{1,2})([\-\.\/])([0-9]{1,2})\2([0-9]{2})$/,parser:function(a){return a? Date.UTC(+a[4]+2E3,a[1]-1,+a[3]):NaN}}};e=a(f.defaultOptions,e);let b=e.decimalPoint;if("."===b||","===b)this.decimalRegExp=new RegExp("^(-?[0-9]+)"+("."===b?"\\.":",")+"([0-9]+)$");this.options=e}asBoolean(a){return"boolean"===typeof a?a:"string"===typeof a?""!==a&&"0"!==a&&"false"!==a:!!this.asNumber(a)}asDate(a){if("string"===typeof a)a=this.parseDate(a);else if("number"!==typeof a){if(a instanceof Date)return a;a=this.parseDate(this.asString(a))}return new Date(a)}asGuessedType(a){return{number:this.asNumber, Date:this.asDate,string:this.asString}[this.guessType(a)].call(this,a)}asNumber(a){if("number"===typeof a)return a;if("boolean"===typeof a)return a?1:0;if("string"===typeof a){const e=this.decimalRegExp;-1a.length)b= a.length;for(;dm?"YY":"YYYY":12=m?(g[q]="dd",h=!0):g[q].length||(g[q]="mm"));if(h){for(q=0;q=b.firstRow&&c.lastRow<=b.lastRow&& (!a||!f||a.every(a=>0<=f.indexOf(a)))};c.toPositions=function(c){if("position"===c.type)return[c];const b=c.columns||[],a=[],f=c.state;for(let e=c.firstRow,l=c.lastRow;e{f.modifyTable(a);f.emit({type:"afterBenchmarkIteration"})},{iterations:d}=g({iterations:1},b);f.on("afterBenchmarkIteration",()=>{e.length===d?f.emit({type:"afterBenchmark",results:e}):c()});var h=0,m=0;f.on("modify",()=>{h=window.performance.now()});f.on("afterModify",()=>{m=window.performance.now();e.push(m-h)});c();return e}emit(a){h(this,a.type,a)}modify(a,b){const e=this;return new Promise((f,c)=>{a.modified===a&&(a.modified=a.clone(!1,b));try{f(e.modifyTable(a,b))}catch(t){e.emit({type:"error", detail:b,table:a}),c(t)}})}modifyCell(a,b,e,c,d){return this.modifyTable(a)}modifyColumns(a,b,e,c){return this.modifyTable(a)}modifyRows(a,b,e,c){return this.modifyTable(a)}on(a,b){return c(this,a,b)}}(function(a){a.types={};a.registerType=function(b,e){return!!b&&!a.types[b]&&!!(a.types[b]=e)}})(b||(b={}));return b});k(d,"Data/DataPoolDefaults.js",[],function(){return{connectors:[]}});k(d,"Data/DataPool.js",[d["Data/Connectors/DataConnector.js"],d["Data/DataPoolDefaults.js"],d["Core/Utilities.js"]], function(d,c,h){class g{constructor(b=c){b.connectors=b.connectors||[];this.options=b;this.connectors={}}emit(b){h.fireEvent(this,b.type,b)}getConnector(b){var a=this.connectors[b];if(a)return Promise.resolve(a);if(a=this.getConnectorOptions(b))return this.loadConnector(a);throw Error(`Connector not found. (${b})`);}getConnectorOptions(b){const a=this.options.connectors;for(let f=0,e=a.length;fa.table)}loadConnector(b){return new Promise((a, f)=>{this.emit({type:"load",options:b});var e=d.types[b.type];if(!e)throw Error(`Connector type not found. (${b.type})`);e=new e(b.options);this.connectors[b.name]=e;e.load().then(e=>{this.emit({type:"afterLoad",options:b});a(e)})["catch"](f)})}on(b,a){return h.addEvent(this,b,a)}setConnectorOptions(b){const a=this.options.connectors;this.emit({type:"setConnectorOptions",options:b});for(let f=0,e=a.length;fb)b=e;else return a.substring(b+1,e);a=Error("Incomplete string.");a.name="FormulaParseError"; throw a;}function h(e,f){var c;if(c=e.match(x)){e=""===c[2]||"["===c[2][0];f=""===c[1]||"["===c[1][0];var d=""===c[4]||"["===c[4][0],l=""===c[3]||"["===c[3][0];c={type:"range",beginColumn:e?parseInt(c[2].substring(1,-1)||"0",10):parseInt(c[2],10)-1,beginRow:f?parseInt(c[1].substring(1,-1)||"0",10):parseInt(c[1],10)-1,endColumn:d?parseInt(c[4].substring(1,-1)||"0",10):parseInt(c[4],10)-1,endRow:l?parseInt(c[3].substring(1,-1)||"0",10):parseInt(c[3],10)-1};e&&(c.beginColumnRelative=!0);f&&(c.beginRowRelative= !0);d&&(c.endColumnRelative=!0);l&&(c.endRowRelative=!0);return c}if(c=e.match(y))return e="$"!==c[1][0],f="$"!==c[2][0],d="$"!==c[3][0],l="$"!==c[4][0],c={type:"range",beginColumn:a(e?c[1]:c[1].substring(1))-1,beginRow:parseInt(f?c[2]:c[2].substring(1),10)-1,endColumn:a(d?c[3]:c[3].substring(1))-1,endRow:parseInt(l?c[4]:c[4].substring(1),10)-1},e&&(c.beginColumnRelative=!0),f&&(c.beginRowRelative=!0),d&&(c.endColumnRelative=!0),l&&(c.endRowRelative=!0),c;c=b(e,f);return 1===c.length&&"string"!== typeof c[0]?c[0]:c}function g(a,e){const b=[],f=e?";":",";let d=0,l="";for(let g=0,n=a.length,t;g=c&&(e+=(c-64)*Math.pow(26,d)),--d;return e}const f=/^(?:FALSE|TRUE)/,e=/^[+-]?\d+(?:\.\d+)?(?:e[+-]\d+)?/,l=/^[+-]?\d+(?:,\d+)?(?:e[+-]\d+)?/,n=/^([A-Z][A-Z\d\.]*)\(/,t=/^(?:[+\-*\/^<=>]|<=|=>)/,y=/^(\$?[A-Z]+)(\$?\d+):(\$?[A-Z]+)(\$?\d+)/,x=/^R(\d*|\[\d+\])C(\d*|\[\d+\]):R(\d*|\[\d+\])C(\d*|\[\d+\])/, k=/^(\$?[A-Z]+)(\$?\d+)(?![:C])/,v=/^R(\d*|\[\d+\])C(\d*|\[\d+\])(?!:)/;return{parseFormula:b}});k(d,"Data/Formula/FormulaTypes.js",[],function(){const d="+ - * / ^ = < <= > >=".split(" ");return{isFormula:function(c){return c instanceof Array},isFunction:function(c){return"object"===typeof c&&!(c instanceof Array)&&"function"===c.type},isOperator:function(c){return"string"===typeof c&&0<=d.indexOf(c)},isRange:function(c){return"object"===typeof c&&!(c instanceof Array)&&"range"===c.type},isReference:function(c){return"object"=== typeof c&&!(c instanceof Array)&&"reference"===c.type},isValue:function(c){return"boolean"===typeof c||"number"===typeof c||"string"===typeof c}}});k(d,"Data/Formula/FormulaProcessor.js",[d["Data/Formula/FormulaTypes.js"]],function(d){function c(a){switch(typeof a){case "boolean":return a?D:q;case "string":return A;case "number":return a;default:return NaN}}function h(a){return"string"===typeof a?a.toLowerCase().replace(w,"\x00"):a}function g(a){switch(typeof a){case "boolean":return a?1:0;case "string":return parseFloat(a.replace(",", "."));case "number":return a;default:return NaN}}function b(a,e,b){switch(a){case "=":return h(e)===h(b);case "<":return typeof e===typeof b?h(e)":return typeof e===typeof b?h(e)>h(b):c(e)>c(b);case ">=":return typeof e===typeof b?h(e)>=h(b):c(e)>=c(b)}e=g(e);b=g(b);switch(a){case "+":a=e+b;break;case "-":a=e-b;break;case "*":a=e*b;break;case "/":a=e/b;break;case "^":a=Math.pow(e,b);break;default:return NaN}return a% 1?Math.round(1E9*a)/1E9:a}function a(a,e){return u(a)?a:k(a)?e&&f(a,e)||[]:x(a)?n(a,e):l(m(a)?a:[a],e)}function f(a,e){const b=e.getColumnNames().slice(a.beginColumn,a.endColumn+1),f=[];for(let c=0,d=b.length,l;cC[t]&&(k=b(e,k,l(a.slice(d+2))),d=g);c=b(t,c,k)}else return NaN;k=t=void 0}return u(c)?c:NaN}function n(a,e,b){if(b=z[a.name])try{return b(a.args, e)}catch(E){return NaN}a=Error(`Function "${a.name}" not found.`);a.name="FormulaProcessError";throw a;}function t(a,e=0,b=0){for(let f=0,c=a.length,d;f":0,">=":0},z={},B=/^[A-Z][A-Z\.]*$/;return{asNumber:g,getArgumentValue:a,getArgumentsValues:function(e,b){const f=[];for(let c=0,d=e.length;cb&&(b=e);break;case "object":e=c(e),e>b&&(b=e)}return isFinite(b)?b:0}const {getArgumentsValues:h}= d;d.registerProcessorFunction("MAX",c);return c});k(d,"Data/Formula/Functions/MEDIAN.js",[d["Data/Formula/FormulaProcessor.js"]],function(d){function c(c,g){const b=[];c=d.getArgumentsValues(c,g);for(let a=0,f=c.length,e;ah&&(f=h,e=m)); return 1`"${a}"`).join(h));for(d=0;dm)m=0;if(!k||k>=b.length)k=b.length-1;g||(this.guessedItemDelimiter=this.guessDelimiter(b));if(n){var v=b[0].split(g||this.guessedItemDelimiter|| ",");for(var p=0;p{v=b[a];p=b[a-1];u=b[a+1]},C=a=>{d.length{if(n>q||q>h)++q,w="";else{"string"===typeof w?!isNaN(parseFloat(w))&&isFinite(w)? (w=parseFloat(w),C("number")):isNaN(Date.parse(w))?C("string"):(w=w.replace(/\//g,"-"),C("date")):C("number");e.lengthe[","]?";":",";this.guessedDecimalPoint=a>c?".":",";return b}getTable(){return d.getTableFromColumns(this.columns,this.headers)}}g.defaultOptions=Object.assign(Object.assign({},d.defaultOptions),{lineDelimiter:"\n"});return g});k(d,"Data/Connectors/CSVConnector.js",[d["Data/Converters/CSVConverter.js"],d["Data/Connectors/DataConnector.js"],d["Core/Utilities.js"]],function(d,c,h){const {merge:g}=h;class b extends c{constructor(a){a=g(b.defaultOptions,a);super(a);this.converter= new d(a);this.options=a;a.enablePolling&&this.startPolling(1E3*Math.max(a.dataRefreshRate||0,1))}load(a){const b=this,e=b.converter,c=b.table,{csv:d,csvURL:h}=b.options;if(d)c.deleteRows(),b.emit({type:"load",csv:d,detail:a,table:c}),e.parse({csv:d}),c.setColumns(e.getTable().getColumns()),b.emit({type:"afterLoad",csv:d,detail:a,table:c});else{if(h)return b.table.deleteColumns(),b.emit({type:"load",detail:a,table:b.table}),fetch(h||"").then(e=>e.text().then(e=>{b.converter.parse({csv:e});b.table.setColumns(b.converter.getTable().getColumns()); b.emit({type:"afterLoad",csv:e,detail:a,table:b.table})}))["catch"](e=>{b.emit({type:"loadError",detail:a,error:e,table:b.table});return Promise.reject(e)}).then(()=>b);b.emit({type:"loadError",detail:a,error:"Unable to load: no CSV string or URL was provided",table:c})}return Promise.resolve(b)}}b.defaultOptions={csv:"",csvURL:"",enablePolling:!1,dataRefreshRate:1};c.registerType("CSV",b);return b});k(d,"Data/Converters/GoogleSheetsConverter.js",[d["Data/Converters/DataConverter.js"],d["Core/Utilities.js"]], function(d,c){const {merge:h,uniqueKey:g}=c;class b extends d{constructor(a){a=h(b.defaultOptions,a);super(a);this.columns=[];this.header=[];this.options=a}parse(a,b){a=h(this.options,a);const e=(a.json&&a.json.values||[]).map(a=>a.slice());if(0===e.length)return!1;this.header=[];this.columns=[];this.emit({type:"parse",columns:this.columns,detail:b,headers:this.header});this.columns=e;let c;for(let b=0,d=e.length;ba.json().then(a=>{if("object"===typeof a&&a&&"object"===typeof a.error&&a.error&&"number"===typeof a.error.code&& "string"===typeof a.error.message&&"string"===typeof a.error.status)throw Error(a.error.message);e.converter.parse({firstRowAsNames:f,json:a});e.table.setColumns(e.converter.getTable().getColumns());e.emit({type:"afterLoad",detail:b,table:e.table,url:m});d&&setTimeout(()=>e.load(),1E3*Math.max(c||0,1))}))["catch"](a=>{e.emit({type:"loadError",detail:b,error:a,table:e.table});return Promise.reject(a)}).then(()=>e)}}a.defaultOptions={googleAPIKey:"",googleSpreadsheetKey:"",worksheet:1,enablePolling:!1, dataRefreshRate:2,firstRowAsNames:!0};(function(a){function e(a={}){const {endColumn:e,endRow:c,googleSpreadsheetRange:d,startColumn:f,startRow:l}=a;return d||("ABCDEFGHIJKLMNOPQRSTUVWXYZ"[f||0]||"A")+(Math.max(l||0,0)+1)+":"+("ABCDEFGHIJKLMNOPQRSTUVWXYZ"[b(e,25)]||"Z")+(c?Math.max(c,0):"Z")}a.buildFetchURL=function(a,b,c={}){return`https://sheets.googleapis.com/v4/spreadsheets/${b}/values/`+(c.onlyColumnNames?"A1:Z1":e(c))+"?alt=json"+(c.onlyColumnNames?"":"&dateTimeRenderOption=FORMATTED_STRING&majorDimension=COLUMNS&valueRenderOption=UNFORMATTED_VALUE")+ "&prettyPrint=false"+`&key=${a}`};a.buildQueryRange=e})(a||(a={}));d.registerType("GoogleSheets",a);return a});k(d,"Data/Converters/HTMLTableConverter.js",[d["Data/Converters/DataConverter.js"],d["Core/Utilities.js"]],function(d,c){const {merge:h}=c;class g extends d{constructor(b){b=h(g.defaultOptions,b);super(b);this.columns=[];this.headers=[];this.options=b;b.tableElement&&(this.tableElement=b.tableElement,this.tableElementID=b.tableElement.id)}export(b,a=this.options){var c=!1!==a.firstRowAsNames, e=a.useMultiLevelHeaders,d=b.getSortedColumns(a.usePresentationOrder);const h=Object.keys(d);b=[];const g=h.length,m=[];var k="";if(c)if(k=[],e){for(var r of h)e=(d[r].shift()||"").toString(),k.push(e);k=this.getTableHeaderHTML(h,k,a)}else k=this.getTableHeaderHTML(void 0,h,a);for(r=0;r"+m[a].join("")+"")}}d="";a.tableCaption&&(d=''+a.tableCaption+"");return""+d+k+""+b.join("")+"
"}getCellHTMLFromValue(b,a,c,e,d){let f=e;a="text"+(a?" "+a:"");"number"===typeof f?(f=f.toString(),","===d&&(f=f.replace(".",d)),a="number"):e||(f="",a="empty");return"<"+b+(c?" "+c:"")+' class="'+a+'">'+f+""}getTableHeaderHTML(b=[],a=[],c=this.options){const {useMultiLevelHeaders:e, useRowspanHeaders:d}=c;c.useLocalDecimalPoint&&(1.1).toLocaleString();c="";let f=0,h=a&&a.length;var g;let m=0;if(g=e&&b&&a){a:if(g=b.length,a.length===g){for(;--g;)if(b[g]!==a[g]){g=!1;break a}g=!0}else g=!1;g=!g}if(g){for(c+="";f"}return c+""}parse(b,a){const c=[],e=[];var d=h(this.options,b);const {endRow:g,startColumn:k,endColumn:m,firstRowAsNames:x}=d;b=d.tableElement||this.tableElement;if(b instanceof HTMLElement){this.tableElement=b;this.tableElementID=b.id;this.emit({type:"parse",columns:this.columns, detail:a,headers:this.headers});b=b.getElementsByTagName("tr");var r=b.length,v=0;({startRow:d}=d);if(x&&r){var p=b[0].children,u=p.length;for(var w=k;wm);w++){var q=p[w];"TD"!==q.tagName&&"TH"!==q.tagName||e.push(q.innerHTML)}d++}for(;v=d&&v<=g)for(p=b[v].children,u=p.length,w=0;w=k&&w<=m)for(c[a]||(c[a]=[]),q=this.asGuessedType(q.innerHTML),q instanceof Date&&(q=q.getTime()),c[a][v-d]=q,q=1;v-d>=q&&void 0=== b[v-d-q];)b[v-d-q]=null,q++;w++}v++}this.columns=c;this.headers=e;this.emit({type:"afterParse",columns:c,detail:a,headers:e})}else this.emit({type:"parseError",columns:c,detail:a,headers:e,error:"Not a valid HTML Table"})}getTable(){return d.getTableFromColumns(this.columns,this.headers)}}g.defaultOptions=Object.assign(Object.assign({},d.defaultOptions),{useRowspanHeaders:!0,useMultiLevelHeaders:!0});return g});k(d,"Data/Connectors/HTMLTableConnector.js",[d["Data/Connectors/DataConnector.js"],d["Core/Globals.js"], d["Data/Converters/HTMLTableConverter.js"],d["Core/Utilities.js"]],function(d,c,h,g){const {win:b}=c,{merge:a}=g;class f extends d{constructor(b){b=a(f.defaultOptions,b);super(b);this.converter=new h(b);this.options=b}load(e){this.table.deleteColumns();this.emit({type:"load",detail:e,table:this.table,tableElement:this.tableElement});var {table:c}=this.options;"string"===typeof c?(this.tableID=c,c=b.document.getElementById(c)):this.tableID=c.id;this.tableElement=c||void 0;if(!this.tableElement)return this.emit({type:"loadError", detail:e,error:"HTML table not provided, or element with ID not found",table:this.table}),Promise.reject(Error("HTML table not provided, or element with ID not found"));this.converter.parse(a({tableElement:this.tableElement},this.options),e);this.table.setColumns(this.converter.getTable().getColumns());this.emit({type:"afterLoad",detail:e,table:this.table,tableElement:this.tableElement});return Promise.resolve(this)}}f.defaultOptions={table:""};d.registerType("HTMLTable",f);return f});k(d,"Data/Modifiers/ChainModifier.js", [d["Data/Modifiers/DataModifier.js"],d["Core/Utilities.js"]],function(d,c){const {merge:h}=c;class g extends d{constructor(b,...a){super();this.chain=a;this.options=h(g.defaultOptions,b);b=this.options.chain||[];for(let c=0,e=b.length,g;cd.modify(b.modified,a))}e=e.then(a=>{b.modified=a.modified;return b});return e=e["catch"](e=>{this.emit({type:"error",detail:a,table:b});throw e;})}modifyCell(b,a,c,e,d){const f=this.options.reverse?this.chain.reverse():this.chain;if(f.length){let g=b.clone();for(let b=0,h=f.length;b`${a}`);const a={};for(let c=0,d=b.getRowCount(),f;c=h.minValue&&f<=h.maxValue&&(g=b.getRow(a))&&d.push(g)}}f.deleteRows();f.setRows(d)}this.emit({type:"afterModify",detail:a,table:b});return b}}g.defaultOptions={modifier:"Range",strict:!1,ranges:[]};d.registerType("Range",g);return g});k(d,"Data/Modifiers/SortModifier.js", [d["Data/Modifiers/DataModifier.js"],d["Data/DataTable.js"],d["Core/Utilities.js"]],function(d,c,h){const {merge:g}=h;class b extends d{static ascending(a,b){return(a||0)<(b||0)?-1:(a||0)>(b||0)?1:0}static descending(a,b){return(b||0)<(a||0)?-1:(b||0)>(a||0)?1:0}constructor(a){super();this.options=g(b.defaultOptions,a)}getRowReferences(a){a=a.getRows();const b=[];for(let c=0,d=a.length;cm(a.row[v],b.row[v])); if(k){var p=[];for(var u=0;u