{"version":3,"file":"ir-spectrum.js","sources":["../node_modules/ml-spectra-processing/lib-esm/utils/createFromToArray.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/utils/getOutputArray.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-spectra-processing/lib-esm/x/xDivide.js","../node_modules/ml-spectra-processing/lib-esm/x/xEnsureFloat64.js","../node_modules/ml-spectra-processing/lib-esm/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsMonotone.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsMonotoneIncreasing.js","../node_modules/ml-spectra-processing/lib-esm/x/xMean.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib-esm/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xNormed.js","../node_modules/ml-spectra-processing/lib-esm/x/xVariance.js","../node_modules/ml-spectra-processing/lib-esm/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xRescale.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterXPositive.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxClosestYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinClosestYPoint.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMinMaxZ.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/views/base.js","../node_modules/ml-matrix/src/views/transpose.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/common-spectrum/lib-esm/jsgraph/addStyle.js","../node_modules/common-spectrum/lib-esm/jsgraph/colors.js","../node_modules/common-spectrum/lib-esm/jsgraph/getJSGraph.js","../node_modules/common-spectrum/lib-esm/jsgraph/getNormalizationAnnotations.js","../node_modules/common-spectrum/lib-esm/util/appendDistinctParameter.js","../node_modules/common-spectrum/lib-esm/util/appendDistinctValue.js","../node_modules/common-spectrum/lib-esm/AnalysesManager.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/centerMean.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/centerMedian.js","../node_modules/ml-signal-processing/lib-esm/filters/x/fromTo.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/normed.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/divideBySD.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/rescale.js","../node_modules/ml-airpls/src/choleskySolver.js","../node_modules/cuthill-mckee/cuthill-mckee.js","../node_modules/ml-airpls/src/utils.js","../node_modules/ml-airpls/src/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/baselines/src/airPLS.js","../node_modules/ml-regression-base/src/maybeToPrecision.js","../node_modules/ml-regression-base/src/checkArrayLength.js","../node_modules/ml-regression-base/src/index.js","../node_modules/ml-regression-polynomial/src/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/baselines/src/iterativePolynomial.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-array-sum/lib-es6/index.js","../node_modules/ml-array-mean/lib-es6/index.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xPadding.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xRolling.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xRollingAverage.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xRollingMedian.js","../node_modules/baselines/src/rollingAverage.js","../node_modules/ml-rolling-ball-baseline/src/rollingBall.js","../node_modules/baselines/src/rollingBall.js","../node_modules/baselines/src/rollingMedian.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/airPLSBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/iterativePolynomialBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/rollingAverageBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/rollingBallBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/rollingMedianBaseline.js","../node_modules/ml-savitzky-golay-generalized/lib-esm/index.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/firstDerivative.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/secondDerivative.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/thirdDerivative.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/savitzkyGolay.js","../node_modules/ml-signal-processing/lib-esm/filters/x/ensureGrowing.js","../node_modules/ml-signal-processing/lib-esm/filters/x/equallySpaced.js","../node_modules/ml-signal-processing/lib-esm/filters/x/filterX.js","../node_modules/ml-signal-processing/lib-esm/filterXY.js","../node_modules/common-spectrum/lib-esm/util/getNormalizedSpectrum.js","../node_modules/js-quantities/build/quantities.js","../node_modules/common-spectrum/lib-esm/util/convertUnit.js","../node_modules/common-spectrum/lib-esm/util/ensureRegexp.js","../node_modules/common-spectrum/lib-esm/util/getConvertedVariable.js","../node_modules/common-spectrum/lib-esm/util/getXYSpectrum.js","../node_modules/common-spectrum/lib-esm/Analysis.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/jcampconverter/lib-esm/complexChromatogram.js","../node_modules/jcampconverter/lib-esm/convertToFloatArray.js","../node_modules/jcampconverter/lib-esm/parse/fastParseXYData.js","../node_modules/jcampconverter/lib-esm/parse/parsePeakTable.js","../node_modules/jcampconverter/lib-esm/parse/parseXYA.js","../node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/jcampconverter/lib-esm/2d/generateContourLines.js","../node_modules/jcampconverter/lib-esm/2d/add2D.js","../node_modules/gyromagnetic-ratio/lib-esm/index.js","../node_modules/jcampconverter/lib-esm/postProcessingNMR.js","../node_modules/jcampconverter/lib-esm/profiling.js","../node_modules/jcampconverter/lib-esm/simpleChromatogram.js","../node_modules/jcampconverter/lib-esm/postProcessing.js","../node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/jcampconverter/lib-esm/convert.js","../node_modules/common-spectrum/lib-esm/from/fromJcamp.js","../node_modules/convert-to-jcamp/lib-esm/utils/addInfoData.js","../node_modules/convert-to-jcamp/lib-esm/utils/checkNumberOrArray.js","../node_modules/convert-to-jcamp/lib-esm/utils/checkMatrix.js","../node_modules/convert-to-jcamp/lib-esm/utils/getExtremeValues.js","../node_modules/convert-to-jcamp/lib-esm/utils/vectorEncoder.js","../node_modules/convert-to-jcamp/lib-esm/creatorNtuples.js","../node_modules/convert-to-jcamp/lib-esm/utils/getFactorNumber.js","../node_modules/convert-to-jcamp/lib-esm/utils/getBestFactor.js","../node_modules/convert-to-jcamp/lib-esm/utils/getNumber.js","../node_modules/convert-to-jcamp/lib-esm/utils/peakTableCreator.js","../node_modules/convert-to-jcamp/lib-esm/utils/rescaleAndEnsureInteger.js","../node_modules/convert-to-jcamp/lib-esm/utils/xyDataCreator.js","../node_modules/convert-to-jcamp/lib-esm/fromJSON.js","../node_modules/convert-to-jcamp/lib-esm/fromVariables.js","../node_modules/common-spectrum/lib-esm/to/toJcamps.js","../node_modules/common-spectrum/lib-esm/to/toJcamp.js","../node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/ml-spectra-fitting/lib-esm/shapes/sumOfGaussians.js","../node_modules/ml-spectra-fitting/lib-esm/shapes/sumOfLorentzians.js","../node_modules/ml-spectra-fitting/lib-esm/shapes/sumOfPseudoVoigts.js","../node_modules/ml-spectra-fitting/lib-esm/util/assignDeep.js","../node_modules/ml-spectra-fitting/lib-esm/util/checkInput.js","../node_modules/ml-levenberg-marquardt/lib-esm/checkOptions.js","../node_modules/ml-levenberg-marquardt/lib-esm/errorCalculation.js","../node_modules/ml-levenberg-marquardt/lib-esm/gradientFunction.js","../node_modules/ml-levenberg-marquardt/lib-esm/step.js","../node_modules/ml-levenberg-marquardt/lib-esm/index.js","../node_modules/ml-spectra-fitting/lib-esm/util/selectMethod.js","../node_modules/ml-spectra-fitting/lib-esm/index.js","../node_modules/common-spectrum/lib-esm/util/peakPicking.js","../node_modules/common-spectrum/node_modules/ml-gsd/lib-esm/utils/optimizeTop.js","../node_modules/common-spectrum/node_modules/ml-gsd/lib-esm/gsd.js","../node_modules/common-spectrum/lib-esm/util/autoPeakPicking.js","../node_modules/common-spectrum/lib-esm/index.js","../src/jsgraph/getAnnotations.js","../src/from/utils/spectrumCallback.js","../src/from/fromJcamp.js","../node_modules/iobuffer/lib-esm/utf8.browser.js","../node_modules/iobuffer/lib-esm/IOBuffer.js","../node_modules/spc-parser/src/utility.js","../node_modules/spc-parser/src/dataBlock.js","../node_modules/spc-parser/src/logBlock.js","../node_modules/spc-parser/src/types.js","../node_modules/spc-parser/src/mainHeader.js","../node_modules/spc-parser/src/index.js","../src/from/fromSPC.js","../src/index.js"],"sourcesContent":["/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n *\n * @param options - options\n * @return - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    let { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom === true && includeTo === true) {\n        div = length - 1;\n    }\n    else if ((includeFrom === false && includeTo === true) ||\n        (includeFrom === true && includeTo === false)) {\n        div = length;\n    }\n    else if (includeFrom === false && includeTo === false) {\n        div = length + 1;\n    }\n    let delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom === true) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        let base = (to / from) ** (1 / div);\n        let firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom === true) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('Please choose for the distribution either uniform or log. By default the distribution chosen is uniform.');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n/**\n * Calculates the median of an array\n *\n * @param input - Array containing values\n * @returns - median\n */\nexport function xMedian(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    // we need to slice because the order of elements is changed in the quickselect\n    // https://github.com/mad-gooze/median-quickselect\n    return quickSelectMedian(input.slice());\n}\n//# sourceMappingURL=xMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is of type array\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n//# sourceMappingURL=xCheck.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from '..';\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n *\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xDivide: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    let array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","import { xCheck } from './xCheck';\n/**\n * Returns a copy of the data as Float64\n *\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","/**\n * Returns the closest index of a `target`\n *\n * @param array - array of numbers\n * @param target - target\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n *\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex, from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the minimal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","/**\n * Check if the values are separated always by the same difference\n *\n * @param array - Monotone growing array of number\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        let absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotone\n *\n * @param array - array of numbers\n */\nexport function xIsMonotone(array) {\n    if (array.length <= 2) {\n        return true;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return false;\n        }\n        return true;\n    }\n    if (array[0] < array[array.length - 1]) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return false;\n        }\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=xIsMonotone.js.map","/**\n * Returns true if x is monotone\n *\n * @param array - array of numbers\n */\nexport function xIsMonotoneIncreasing(array) {\n    if (array.length < 2) {\n        return true;\n    }\n    for (let i = 0; i < array.length - 1; i++) {\n        if (array[i] >= array[i + 1])\n            return false;\n    }\n    return true;\n}\n//# sourceMappingURL=xIsMonotoneIncreasing.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the mean value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { xMedian } from './xMedian';\n/**\n * This function calculates the median absolute deviation (MAD)\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array\n *\n * @param array - array of number\n * @returns - Object with 2 properties, min and max\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (let value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","import { xMedianAbsoluteDeviation } from '..';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Calculate the sum of the values\n *\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { getOutputArray } from './utils/getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xSum } from './xSum';\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param array - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm.toLowerCase()) {\n        case 'absolute': {\n            let absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            let currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            let sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`norm: unknown algorithm: ${algorithm}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (let i = 0; i < input.length; i++) {\n        sumValue += Math.abs(input[i]);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from './xMean';\n/** Finds the variance of the data\n *\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (let i = 0; i < values.length; i++) {\n        let x = values[i] - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from './xVariance';\n/** Finds the standard deviation for the data at hand\n *\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { xCheck } from '..';\nimport { getOutputArray } from './utils/getOutputArray';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/** Function used to rescale data\n *\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Throw an error in no an object of x,y arrays\n *\n * @param data - array of points {x,y,z}\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (typeof data !== 'object' || !isAnyArray(data.x) || !isAnyArray(data.y)) {\n        throw new Error('Data must be an object of x and y arrays');\n    }\n    if (data.x.length !== data.y.length) {\n        throw new Error('The x and y arrays must have the same length');\n    }\n    if (minLength) {\n        if (data.x.length < minLength) {\n            throw new Error(`data.x must have a length of at least ${minLength}`);\n        }\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xIsMonotoneIncreasing } from '..';\nimport { xyCheck } from './xyCheck';\n/**\n * Filters x,y values to allow strictly growing values in x axis.\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotoneIncreasing(data.x))\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY, exclusions = [], } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = JSON.parse(JSON.stringify(zones)).map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : zone);\n    zones = zones.sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    zones.forEach((zone) => {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    });\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    let beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        let zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    let counter = 0;\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        if (counter++ > 5)\n            break;\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from './zonesNormalize';\n/**\n * Add the number of points per zone to reach a specified total\n *\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return zones;\n    let returnZones = zonesNormalize(zones, options);\n    const totalSize = returnZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    let unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < returnZones.length - 1; i++) {\n        let zone = returnZones[i];\n        zone.numberOfPoints = Math.min(Math.round((zone.to - zone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        currentTotal += zone.numberOfPoints;\n    }\n    let zone = returnZones[returnZones.length - 1];\n    zone.numberOfPoints = numberOfPoints - currentTotal;\n    return returnZones;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @return Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    let xLength = x.length;\n    let step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    let halfStep = step / 2;\n    let lastStep = x[x.length - 1] - x[x.length - 2];\n    let start = from - halfStep;\n    // Changed Array to Float64Array\n    let output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @return integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import integral from './integral';\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @return - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    let xLength = x.length;\n    let step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    let halfStep = step / 2;\n    // Changed Array to Float64Array\n    let output = new Float64Array(numberOfPoints);\n    let initialOriginalStep = x[1] - x[0];\n    let lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    function getSlope(x0, y0, x1, y1) {\n        return (y1 - y0) / (x1 - x0);\n    }\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from '../utils/createFromToArray';\nimport { zonesNormalize } from '../zones/zonesNormalize';\nimport { zonesWithPoints } from '../zones/zonesWithPoints';\nimport equallySpacedSlot from './utils/equallySpacedSlot';\nimport equallySpacedSmooth from './utils/equallySpacedSmooth';\nimport { xyCheck } from './xyCheck';\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n *\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @return new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    let { x, y } = data;\n    let xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    });\n    let xResult = [];\n    let yResult = [];\n    for (let zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        let zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    let output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","import { zonesNormalize } from '../zones/zonesNormalize';\n/** Filter an array x/y based on various criteria x points are expected to be sorted\n *\n * @param data - points\n * @param options - options\n * @return filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    const { from = x[0], to = x[x.length - 1], zones = [{ from, to }], exclusions = [], } = options;\n    let normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    let newX = [];\n    let newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else {\n            if (x[position] > normalizedZones[currentZoneIndex].to) {\n                currentZoneIndex++;\n                if (!normalizedZones[currentZoneIndex])\n                    break;\n            }\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xyCheck } from './xyCheck';\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n *\n * @param data - data\n * @returns - An object with the filtered data\n */\nexport function xyFilterXPositive(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    if (x === undefined || y === undefined)\n        return { x: newX, y: newY };\n    for (let i = 0; i < x.length; i++) {\n        if (x[i] > 0) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyFilterXPositive.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest maximum going up hill\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyMaxClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let xyMaxY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] > xyMaxY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] > xyMaxY) {\n            currentIndex++;\n        }\n        xyMaxY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMaxClosestYPoint.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the x/y value\n */\nexport function xyMinClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let minY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] < minY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] < minY) {\n            currentIndex++;\n        }\n        minY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMinClosestYPoint.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw RangeError('matrix should contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('All rows should has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","import { matrixCheck } from './matrixCheck';\n/**\n * Get min and max Z\n *\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","import { isAnyArray } from 'is-any-array';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n","import BaseView from './base';\n\nexport default class MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","export function addStyle(serie, spectrum, options = {}) {\n    let { color = '#A9A9A9', opacity = 1, lineWidth = 1 } = options;\n    // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n    if (color.match(/#[0-9A-F]{6}$/i)) {\n        color = (color + ((opacity * 255) >> 0).toString(16)).toUpperCase();\n    }\n    else {\n        color = color.replace(/rgb ?\\((.*)\\)/, `rgba($1,${opacity})`);\n    }\n    serie.style = [\n        {\n            name: 'unselected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth,\n                    dash: 1,\n                },\n            },\n        },\n        {\n            name: 'selected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth + 2,\n                    dash: 1,\n                },\n            },\n        },\n    ];\n    serie.name = spectrum.label || spectrum.id;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkU3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNncmFwaC9hZGRTdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLFVBQVUsUUFBUSxDQUN0QixLQUE4QixFQUM5QixRQUFrQixFQUNsQixVQUF3QixFQUFFO0lBRTFCLElBQUksRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxpRUFBaUU7SUFDakUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDakMsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDckU7U0FBTTtRQUNMLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxXQUFXLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDL0Q7SUFDRCxLQUFLLENBQUMsS0FBSyxHQUFHO1FBQ1o7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFO29CQUNKLEtBQUs7b0JBQ0wsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLElBQUksRUFBRSxDQUFDO2lCQUNSO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRTtvQkFDSixLQUFLO29CQUNMLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQztvQkFDcEIsSUFBSSxFQUFFLENBQUM7aUJBQ1I7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNGLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQzdDLENBQUMifQ==","export const COLORS = [\n    '#FFB300',\n    '#803E75',\n    '#FF6800',\n    '#A6BDD7',\n    '#C10020',\n    '#CEA262',\n    '#817066',\n    '#007D34',\n    '#F6768E',\n    '#00538A',\n    '#FF7A5C',\n    '#53377A',\n    '#FF8E00',\n    '#B32851',\n    '#F4C800',\n    '#7F180D',\n    '#93AA00',\n    '#593315',\n    '#F13A13',\n    '#232C16',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzZ3JhcGgvY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRztJQUNwQixTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztDQUNWLENBQUMifQ==","import { xyFilterXPositive } from 'ml-spectra-processing';\nimport { addStyle } from './addStyle';\nimport { COLORS } from './colors';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n */\nexport function getJSGraph(analyses, options = {}) {\n    const { colors = COLORS, opacities = [1], linesWidth = [1], selector = {}, normalization, xAxis = {}, yAxis = {}, } = options;\n    let series = [];\n    let xLabel = xAxis.label;\n    let yLabel = yAxis.label;\n    let xUnits = xAxis.units;\n    let yUnits = yAxis.units;\n    for (let i = 0; i < analyses.length; i++) {\n        const analysis = analyses[i];\n        let serie = {};\n        let currentData = analysis.getNormalizedSpectrum({\n            selector,\n            normalization,\n        });\n        if (!currentData)\n            continue;\n        if (!xLabel)\n            xLabel = currentData.variables.x.label;\n        if (!yLabel)\n            yLabel = currentData.variables.y.label;\n        if (!xUnits)\n            xUnits = currentData.variables.x.units;\n        if (!yUnits)\n            yUnits = currentData.variables.y.units;\n        addStyle(serie, analysis, {\n            color: colors[i % colors.length],\n            opacity: opacities[i % opacities.length],\n            lineWidth: linesWidth[i % linesWidth.length],\n        });\n        serie.data = {\n            x: currentData.variables.x.data,\n            y: currentData.variables.y.data,\n        };\n        if (xAxis.logScale) {\n            serie.data = xyFilterXPositive(serie.data);\n        }\n        series.push(serie);\n    }\n    return {\n        axes: {\n            x: {\n                label: xLabel,\n                unit: xUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...xAxis,\n            },\n            y: {\n                label: yLabel,\n                unit: yUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...yAxis,\n            },\n        },\n        series,\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0SlNHcmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc2dyYXBoL2dldEpTR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBdUJsQzs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBb0IsRUFBRSxVQUEwQixFQUFFO0lBQzNFLE1BQU0sRUFDSixNQUFNLEdBQUcsTUFBTSxFQUNmLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNmLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNoQixRQUFRLEdBQUcsRUFBRSxFQUNiLGFBQWEsRUFDYixLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxFQUFFLEdBQ1gsR0FBRyxPQUFPLENBQUM7SUFDWixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN6QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3pCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDekIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUV6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUM7WUFDL0MsUUFBUTtZQUNSLGFBQWE7U0FDZCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVztZQUFFLFNBQVM7UUFDM0IsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDaEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN4QyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQzdDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxJQUFJLEdBQUc7WUFDWCxDQUFDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMvQixDQUFDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNoQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQWMsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU87UUFDTCxJQUFJLEVBQUU7WUFDSixDQUFDLEVBQUU7Z0JBQ0QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osaUJBQWlCLEVBQUUsR0FBRztnQkFDdEIsZ0JBQWdCLEVBQUUsR0FBRztnQkFDckIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxLQUFLO2FBQ1Q7WUFDRCxDQUFDLEVBQUU7Z0JBQ0QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osaUJBQWlCLEVBQUUsR0FBRztnQkFDdEIsZ0JBQWdCLEVBQUUsR0FBRztnQkFDckIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxLQUFLO2FBQ1Q7U0FDRjtRQUNELE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyJ9","export function getNormalizationAnnotations(filter = {}, boundary = { y: { min: '0px', max: '2000px' } }) {\n    let { exclusions = [] } = filter;\n    let annotations = [];\n    exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n    annotations = exclusions.map((exclusion) => {\n        let annotation = {\n            type: 'rect',\n            position: [\n                { x: exclusion.from, y: boundary.y.min },\n                { x: exclusion.to, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        };\n        return annotation;\n    });\n    if (filter.from !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: Number.MIN_SAFE_INTEGER, y: boundary.y.min },\n                { x: filter.from, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    if (filter.to !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: filter.to, y: boundary.y.min },\n                { x: Number.MAX_SAFE_INTEGER, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    return annotations;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Tm9ybWFsaXphdGlvbkFubm90YXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzZ3JhcGgvZ2V0Tm9ybWFsaXphdGlvbkFubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsU0FBNEIsRUFBRSxFQUM5QixRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUUvQyxJQUFJLEVBQUUsVUFBVSxHQUFHLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVqQyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDckIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDekMsSUFBSSxVQUFVLEdBQUc7WUFDZixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRTtnQkFDUixFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtnQkFDeEMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7YUFDdkM7WUFDRCxXQUFXLEVBQUUsQ0FBQztZQUNkLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUM3QixXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLE1BQU07WUFDWixRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtnQkFDakQsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7YUFDdEM7WUFDRCxXQUFXLEVBQUUsQ0FBQztZQUNkLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO1FBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRTtnQkFDUixFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTthQUNsRDtZQUNELFdBQVcsRUFBRSxDQUFDO1lBQ2QsU0FBUyxFQUFFLHFCQUFxQjtTQUNqQyxDQUFDLENBQUM7S0FDSjtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMifQ==","export function appendDistinctParameter(values, key, value) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            values: [],\n            count: 0,\n        };\n    }\n    if (!values[key].values.includes(value)) {\n        values[key].values.push(value);\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kRGlzdGluY3RQYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9hcHBlbmREaXN0aW5jdFBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE1BQXFDLEVBQ3JDLEdBQVcsRUFDWCxLQUFhO0lBRWIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDWixHQUFHO1lBQ0gsTUFBTSxFQUFFLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7S0FDSDtJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN0QixDQUFDIn0=","export function appendDistinctValue(values, key) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            count: 0,\n        };\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kRGlzdGluY3RWYWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FwcGVuZERpc3RpbmN0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxNQUFtQyxFQUNuQyxHQUFXO0lBRVgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDWixHQUFHO1lBQ0gsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO0tBQ0g7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEIsQ0FBQyJ9","import { appendDistinctParameter } from './util/appendDistinctParameter';\nimport { appendDistinctValue } from './util/appendDistinctValue';\nexport class AnalysesManager {\n    constructor() {\n        this.analyses = [];\n    }\n    addAnalysis(analysis) {\n        let index = this.getAnalysisIndex(analysis.id);\n        if (index === undefined) {\n            this.analyses.push(analysis);\n        }\n        else {\n            this.analyses[index] = analysis;\n        }\n    }\n    getAnalyses(options = {}) {\n        const { ids } = options;\n        let analyses = [];\n        for (const analysis of this.analyses) {\n            if (!ids || ids.includes(analysis.id)) {\n                analyses.push(analysis);\n            }\n        }\n        return analyses;\n    }\n    getSpectra() {\n        const spectra = [];\n        for (const analysis of this.analyses) {\n            spectra.push(...analysis.spectra);\n        }\n        return spectra;\n    }\n    /**\n     * Get an array of objects (key + count) of all the titles\n     */\n    getDistinctTitles() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.title) {\n                appendDistinctValue(values, spectrum.title);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the units\n     */\n    getDistinctUnits() {\n        var _a;\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (let [, variable] of Object.entries(spectrum.variables)) {\n                    const units = (_a = variable.units) === null || _a === void 0 ? void 0 : _a.replace(/\\s+\\[.*/, '');\n                    if (units) {\n                        appendDistinctValue(values, units);\n                    }\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the labels\n     */\n    getDistinctLabels() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (let [, variable] of Object.entries(spectrum.variables)) {\n                    appendDistinctValue(values, variable.label.replace(/\\s+\\[.*/, ''));\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the dataTypes\n     */\n    getDistinctDataTypes() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.dataType) {\n                appendDistinctValue(values, spectrum.dataType);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the meta\n     */\n    getDistinctMeta() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.meta) {\n                for (let key in spectrum.meta) {\n                    appendDistinctParameter(values, key, spectrum.meta[key]);\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    removeAllAnalyses() {\n        this.analyses.splice(0);\n    }\n    /**\n     * Remove the analysis from the AnalysesManager for the specified id\n     */\n    removeAnalysis(id) {\n        let index = this.getAnalysisIndex(id);\n        if (index === undefined)\n            return undefined;\n        return this.analyses.splice(index, 1);\n    }\n    /**\n     * Returns the index of the analysis in the analyses array\n     */\n    getAnalysisIndex(id) {\n        if (!id)\n            return undefined;\n        for (let i = 0; i < this.analyses.length; i++) {\n            let analysis = this.analyses[i];\n            if (analysis.id === id)\n                return i;\n        }\n        return undefined;\n    }\n    /**\n     * Checks if the ID of an analysis exists in the AnalysesManager\n     */\n    includes(id) {\n        const index = this.getAnalysisIndex(id);\n        return index === undefined ? false : !isNaN(index);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5hbHlzZXNNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0FuYWx5c2VzTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU1qRSxNQUFNLE9BQU8sZUFBZTtJQUcxQjtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBa0I7UUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxVQUE4QixFQUFFO1FBQ2pELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxRQUFRLEdBQWUsRUFBRSxDQUFDO1FBQzlCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUks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","import { xMean } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function centerMean(data) {\n    const { y } = data;\n    const mean = xMean(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= mean;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMean.js.map","import { xMedian } from 'ml-spectra-processing';\n/**\n * Center the median\n * @param data\n */\nexport function centerMedian(data) {\n    const { y } = data;\n    const median = xMedian(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= median;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMedian.js.map","import { xGetFromToIndex } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function fromTo(data, options = {}) {\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, options);\n    return {\n        data: {\n            x: data.x.subarray(fromIndex, toIndex + 1),\n            y: data.y.subarray(fromIndex, toIndex + 1),\n        },\n    };\n}\n//# sourceMappingURL=fromTo.js.map","import { xNormed } from 'ml-spectra-processing';\n/**\n * Norm the Y values\n * @param data\n */\nexport function normed(data, options = {}) {\n    xNormed(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=normed.js.map","import { xStandardDeviation } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function divideBySD(data) {\n    const { y } = data;\n    const sd = xStandardDeviation(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] /= sd;\n    }\n    return { data };\n}\n//# sourceMappingURL=divideBySD.js.map","import { xRescale } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function rescale(data, options = {}) {\n    xRescale(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=rescale.js.map","// Based on https://github.com/scijs/cholesky-solve\r\n\r\n/*\r\nThe MIT License (MIT)\r\n\r\nCopyright (c) 2013 Eric Arnebäck\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE.\r\n*/\r\n\r\nfunction ldlSymbolic(\r\n  n /* A and L are n-by-n, where n >= 0 */,\r\n  Ap /* input of size n + 1, not modified */,\r\n  Ai /* input of size nz=Ap[n], not modified */,\r\n  Lp /* output of size n + 1, not defined on input */,\r\n  Parent /* output of size n, not defined on input */,\r\n  Lnz /* output of size n, not defined on input */,\r\n  Flag /* workspace of size n, not defn. on input or output */,\r\n) {\r\n  let i, k, p, kk, p2;\r\n\r\n  for (k = 0; k < n; k++) {\r\n    /* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */\r\n    Parent[k] = -1; /* parent of k is not yet known */\r\n    Flag[k] = k; /* mark node k as visited */\r\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\r\n    kk = k; /* kth original, or permuted, column */\r\n    p2 = Ap[kk + 1];\r\n    for (p = Ap[kk]; p < p2; p++) {\r\n      /* A (i,k) is nonzero (original or permuted A) */\r\n      i = Ai[p];\r\n\r\n      if (i < k) {\r\n        /* follow path from i to root of etree, stop at flagged node */\r\n        for (; Flag[i] !== k; i = Parent[i]) {\r\n          /* find parent of i if not yet determined */\r\n          if (Parent[i] === -1) Parent[i] = k;\r\n          Lnz[i]++; /* L (k,i) is nonzero */\r\n          Flag[i] = k; /* mark i as visited */\r\n        }\r\n      }\r\n    }\r\n  }\r\n  /* construct Lp index array from Lnz column counts */\r\n  Lp[0] = 0;\r\n  for (k = 0; k < n; k++) {\r\n    Lp[k + 1] = Lp[k] + Lnz[k];\r\n  }\r\n}\r\n\r\nfunction ldlNumeric(\r\n  n /* A and L are n-by-n, where n >= 0 */,\r\n  Ap /* input of size n+1, not modified */,\r\n  Ai /* input of size nz=Ap[n], not modified */,\r\n  Ax /* input of size nz=Ap[n], not modified */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Parent /* input of size n, not modified */,\r\n  Lnz /* output of size n, not defn. on input */,\r\n  Li /* output of size lnz=Lp[n], not defined on input */,\r\n  Lx /* output of size lnz=Lp[n], not defined on input */,\r\n  D /* output of size n, not defined on input */,\r\n  Y /* workspace of size n, not defn. on input or output */,\r\n  Pattern /* workspace of size n, not defn. on input or output */,\r\n  Flag /* workspace of size n, not defn. on input or output */,\r\n) {\r\n  let yi, lKi;\r\n  let i, k, p, kk, p2, len, top;\r\n  for (k = 0; k < n; k++) {\r\n    /* compute nonzero Pattern of kth row of L, in topological order */\r\n    Y[k] = 0.0; /* Y(0:k) is now all zero */\r\n    top = n; /* stack for pattern is empty */\r\n    Flag[k] = k; /* mark node k as visited */\r\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\r\n    kk = k; /* kth original, or permuted, column */\r\n    p2 = Ap[kk + 1];\r\n    for (p = Ap[kk]; p < p2; p++) {\r\n      i = Ai[p]; /* get A(i,k) */\r\n      if (i <= k) {\r\n        Y[i] += Ax[p]; /* scatter A(i,k) into Y (sum duplicates) */\r\n        for (len = 0; Flag[i] !== k; i = Parent[i]) {\r\n          Pattern[len++] = i; /* L(k,i) is nonzero */\r\n          Flag[i] = k; /* mark i as visited */\r\n        }\r\n        while (len > 0) Pattern[--top] = Pattern[--len];\r\n      }\r\n    }\r\n    /* compute numerical values kth row of L (a sparse triangular solve) */\r\n    D[k] = Y[k]; /* get D(k,k) and clear Y(k) */\r\n    Y[k] = 0.0;\r\n    for (; top < n; top++) {\r\n      i = Pattern[top]; /* Pattern[top:n-1] is pattern of L(:,k) */\r\n      yi = Y[i]; /* get and clear Y(i) */\r\n      Y[i] = 0.0;\r\n      p2 = Lp[i] + Lnz[i];\r\n      for (p = Lp[i]; p < p2; p++) {\r\n        Y[Li[p]] -= Lx[p] * yi;\r\n      }\r\n      lKi = yi / D[i]; /* the nonzero entry L(k,i) */\r\n      D[k] -= lKi * yi;\r\n      Li[p] = k; /* store L(k,i) in column form of L */\r\n      Lx[p] = lKi;\r\n      Lnz[i]++; /* increment count of nonzeros in col i */\r\n    }\r\n\r\n    if (D[k] === 0.0) return k; /* failure, D(k,k) is zero */\r\n  }\r\n\r\n  return n; /* success, diagonal of D is all nonzero */\r\n}\r\n\r\nfunction ldlLsolve(\r\n  n /* L is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Li /* input of size lnz=Lp[n], not modified */,\r\n  Lx /* input of size lnz=Lp[n], not modified */,\r\n) {\r\n  let j, p, p2;\r\n  for (j = 0; j < n; j++) {\r\n    p2 = Lp[j + 1];\r\n    for (p = Lp[j]; p < p2; p++) {\r\n      X[Li[p]] -= Lx[p] * X[j];\r\n    }\r\n  }\r\n}\r\nfunction ldlDsolve(\r\n  n /* D is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  D /* input of size n, not modified */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[j] /= D[j];\r\n  }\r\n}\r\nfunction ldlLTsolve(\r\n  n /* L is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Li /* input of size lnz=Lp[n], not modified */,\r\n  Lx /* input of size lnz=Lp[n], not modified */,\r\n) {\r\n  let j, p, p2;\r\n  for (j = n - 1; j >= 0; j--) {\r\n    p2 = Lp[j + 1];\r\n    for (p = Lp[j]; p < p2; p++) {\r\n      X[j] -= Lx[p] * X[Li[p]];\r\n    }\r\n  }\r\n}\r\n\r\nfunction ldlPerm(\r\n  n /* size of X, B, and P */,\r\n  X /* output of size n. */,\r\n  B /* input of size n. */,\r\n  P /* input permutation array of size n. */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[j] = B[P[j]];\r\n  }\r\n}\r\n\r\nfunction ldlPermt(\r\n  n /* size of X, B, and P */,\r\n  X /* output of size n. */,\r\n  B /* input of size n. */,\r\n  P /* input permutation array of size n. */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[P[j]] = B[j];\r\n  }\r\n}\r\n\r\nfunction prepare(M, n, P) {\r\n  // if a permutation was specified, apply it.\r\n  if (P) {\r\n    let Pinv = new Array(n);\r\n\r\n    for (let k = 0; k < n; k++) {\r\n      Pinv[P[k]] = k;\r\n    }\r\n\r\n    let Mt = []; // scratch memory\r\n    // Apply permutation. We make M into P*M*P^T\r\n    for (let a = 0; a < M.length; ++a) {\r\n      let ar = Pinv[M[a][0]];\r\n      let ac = Pinv[M[a][1]];\r\n\r\n      // we only store the upper-diagonal elements(since we assume matrix is symmetric, we only need to store these)\r\n      // if permuted element is below diagonal, we simply transpose it.\r\n      if (ac < ar) {\r\n        let t = ac;\r\n        ac = ar;\r\n        ar = t;\r\n      }\r\n\r\n      Mt[a] = [];\r\n      Mt[a][0] = ar;\r\n      Mt[a][1] = ac;\r\n      Mt[a][2] = M[a][2];\r\n    }\r\n\r\n    M = Mt; // copy scratch memory.\r\n  } else {\r\n    // if P argument is null, we just use an identity permutation.\r\n    P = [];\r\n    for (let i = 0; i < n; ++i) {\r\n      P[i] = i;\r\n    }\r\n  }\r\n\r\n  // The sparse matrix we are decomposing is A.\r\n  // Now we shall create A from M.\r\n  let Ap = new Array(n + 1);\r\n  let Ai = new Array(M.length);\r\n  let Ax = new Array(M.length);\r\n\r\n  // count number of non-zero elements in columns.\r\n  let LNZ = [];\r\n  for (let i = 0; i < n; ++i) {\r\n    LNZ[i] = 0;\r\n  }\r\n  for (let a = 0; a < M.length; ++a) {\r\n    LNZ[M[a][1]]++;\r\n  }\r\n\r\n  Ap[0] = 0;\r\n  for (let i = 0; i < n; ++i) {\r\n    Ap[i + 1] = Ap[i] + LNZ[i];\r\n  }\r\n\r\n  let coloffset = [];\r\n  for (let a = 0; a < n; ++a) {\r\n    coloffset[a] = 0;\r\n  }\r\n\r\n  // go through all elements in M, and add them to sparse matrix A.\r\n  for (let i = 0; i < M.length; ++i) {\r\n    let e = M[i];\r\n    let col = e[1];\r\n\r\n    let adr = Ap[col] + coloffset[col];\r\n    Ai[adr] = e[0];\r\n    Ax[adr] = e[2];\r\n\r\n    coloffset[col]++;\r\n  }\r\n\r\n  let D = new Array(n);\r\n  let Y = new Array(n);\r\n  let Lp = new Array(n + 1);\r\n  let Parent = new Array(n);\r\n  let Lnz = new Array(n);\r\n  let Flag = new Array(n);\r\n  let Pattern = new Array(n);\r\n  let bp1 = new Array(n);\r\n  let x = new Array(n);\r\n  let d;\r\n\r\n  ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag);\r\n\r\n  let Lx = new Array(Lp[n]);\r\n  let Li = new Array(Lp[n]);\r\n\r\n  d = ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag);\r\n\r\n  if (d === n) {\r\n    return function (b) {\r\n      ldlPerm(n, bp1, b, P);\r\n      ldlLsolve(n, bp1, Lp, Li, Lx);\r\n      ldlDsolve(n, bp1, D);\r\n      ldlLTsolve(n, bp1, Lp, Li, Lx);\r\n      ldlPermt(n, x, bp1, P);\r\n\r\n      return x;\r\n    };\r\n  } else {\r\n    return null;\r\n  }\r\n}\r\n\r\nexport { prepare as default };\r\n","'use strict'\n\nmodule.exports = cuthillMckee\n\nfunction compareNum(a, b) { return a - b }\n\nfunction cuthillMckee(list, n) {\n  var adj = new Array(n)\n  var visited = new Array(n)\n  for(var i=0; i<n; ++i) {\n    adj[i]     = []\n    visited[i] = false\n  }\n\n  for(var i=0; i<list.length; ++i) {\n    var l = list[i]\n    adj[l[0]].push(l[1])\n  }\n\n  var toVisit = new Array(n)\n  var eol = 0\n  var ptr = 0\n  for(var i=0; i<n; ++i) {\n    if(visited[i]) {\n      continue\n    }\n    toVisit[eol++] = i\n    visited[i] = true\n    while(ptr < eol) {\n      var v = toVisit[ptr++]\n      var nbhd = adj[v]\n      nbhd.sort(compareNum)\n      for(var j=0; j<nbhd.length; ++j) {\n        var u = nbhd[j]\n        if(visited[u]) {\n          continue\n        }\n        visited[u] = true\n        toVisit[eol++] = u\n      }\n    }\n  }\n\n  var result = new Array(n)\n  for(var i=0; i<n; ++i) {\n    result[toVisit[i]] = i\n  }\n\n  return result\n}\n","import cuthillMckee from 'cuthill-mckee';\r\n\r\nconst getClosestNumber = (array = [], goal = 0) => {\r\n  const closest = array.reduce((prev, curr) => {\r\n    return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\r\n  });\r\n  return closest;\r\n};\r\n\r\nconst getCloseIndex = (array = [], goal = 0) => {\r\n  const closest = getClosestNumber(array, goal);\r\n  return array.indexOf(closest);\r\n};\r\n\r\nconst updateSystem = (matrix, y, weights) => {\r\n  let nbPoints = y.length;\r\n  let l = nbPoints - 1;\r\n  let newMatrix = new Array(matrix.length);\r\n  let newVector = new Float64Array(nbPoints);\r\n  for (let i = 0; i < l; i++) {\r\n    let w = weights[i];\r\n    let diag = i * 2;\r\n    let next = diag + 1;\r\n    newMatrix[diag] = matrix[diag].slice();\r\n    newMatrix[next] = matrix[next].slice();\r\n    if (w === 0) {\r\n      newVector[i] = 0;\r\n    } else {\r\n      newVector[i] = y[i] * w;\r\n      newMatrix[diag][2] += w;\r\n    }\r\n  }\r\n  newVector[l] = y[l] * weights[l];\r\n  newMatrix[l * 2] = matrix[l * 2].slice();\r\n  newMatrix[l * 2][2] += weights[l];\r\n\r\n  return [newMatrix, newVector];\r\n};\r\n\r\nconst getDeltaMatrix = (nbPoints, lambda) => {\r\n  let matrix = [];\r\n  let last = nbPoints - 1;\r\n  for (let i = 0; i < last; i++) {\r\n    matrix.push([i, i, lambda * 2]);\r\n    matrix.push([i + 1, i, -1 * lambda]);\r\n  }\r\n  matrix[0][2] = lambda;\r\n  matrix.push([last, last, lambda]);\r\n  return {\r\n    lowerTriangularNonZeros: matrix,\r\n    permutationEncodedArray: cuthillMckee(matrix, nbPoints),\r\n  };\r\n};\r\n\r\nexport { updateSystem, getDeltaMatrix, getCloseIndex, getClosestNumber };\r\n","import Cholesky from './choleskySolver';\r\nimport { updateSystem, getDeltaMatrix, getCloseIndex } from './utils';\r\n\r\n/**\r\n * Fit the baseline drift by iteratively changing weights of sum square error between the fitted baseline and original signals,\r\n * for further information about the parameters you can get the [paper of airPLS](https://github.com/zmzhang/airPLS/blob/master/airPLS_manuscript.pdf)\r\n * @param {Array<number>} x - x axis data useful when control points or zones are submitted\r\n * @param {Array<number>} y - Original data\r\n * @param {object} [options={}] - Options object\r\n * @param {number} [options.maxIterations = 100] - Maximal number of iterations if the method does not reach the stop criterion\r\n * @param {number} [options.factorCriterion = 0.001] - Factor of the sum of absolute value of original data, to compute stop criterion\r\n * @param {Array<number>} [options.weights = [1,1,...]] - Initial weights vector, default each point has the same weight\r\n * @param {number} [options.lambda = 100] - Factor of weights matrix in -> [I + lambda D'D]z = x\r\n * @param {Array<number>} [options.controlPoints = []] - Array of x axis values to force that baseline cross those points.\r\n * @param {Array<number>} [options.baseLineZones = []] - Array of x axis values (as from - to), to force that baseline cross those zones.\r\n * @returns {{corrected: Array<number>, error: number, iteration: number, baseline: Array<number>}}\r\n */\r\nfunction airPLS(x, y, options = {}) {\r\n  let {\r\n    maxIterations = 100,\r\n    lambda = 100,\r\n    factorCriterion = 0.001,\r\n    weights = new Array(y.length).fill(1),\r\n    controlPoints = [],\r\n    baseLineZones = [],\r\n  } = options;\r\n\r\n  if (controlPoints.length > 0) {\r\n    controlPoints.forEach((e, i, arr) => (arr[i] = getCloseIndex(x, e)));\r\n  }\r\n  if (baseLineZones.length > 0) {\r\n    baseLineZones.forEach((range) => {\r\n      let indexFrom = getCloseIndex(x, range.from);\r\n      let indexTo = getCloseIndex(x, range.to);\r\n      if (indexFrom > indexTo) [indexFrom, indexTo] = [indexTo, indexFrom];\r\n      for (let i = indexFrom; i < indexTo; i++) {\r\n        controlPoints.push(i);\r\n      }\r\n    });\r\n  }\r\n\r\n  let baseline, iteration;\r\n  let nbPoints = y.length;\r\n  let l = nbPoints - 1;\r\n  let sumNegDifferences = Number.MAX_SAFE_INTEGER;\r\n  let stopCriterion =\r\n    factorCriterion * y.reduce((sum, e) => Math.abs(e) + sum, 0);\r\n\r\n  let { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(\r\n    nbPoints,\r\n    lambda,\r\n  );\r\n\r\n  for (\r\n    iteration = 0;\r\n    iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion;\r\n    iteration++\r\n  ) {\r\n    let [leftHandSide, rightHandSide] = updateSystem(\r\n      lowerTriangularNonZeros,\r\n      y,\r\n      weights,\r\n    );\r\n\r\n    let cho = Cholesky(leftHandSide, nbPoints, permutationEncodedArray);\r\n\r\n    baseline = cho(rightHandSide);\r\n\r\n    sumNegDifferences = 0;\r\n\r\n    let difference = y.map(calculateError);\r\n\r\n    let maxNegativeDiff = -1 * Number.MAX_SAFE_INTEGER;\r\n    for (let i = 1; i < l; i++) {\r\n      let diff = difference[i];\r\n      if (diff >= 0) {\r\n        weights[i] = 0;\r\n      } else {\r\n        weights[i] = Math.exp((iteration * diff) / sumNegDifferences);\r\n        if (maxNegativeDiff < diff) maxNegativeDiff = diff;\r\n      }\r\n    }\r\n\r\n    let value = Math.exp((iteration * maxNegativeDiff) / sumNegDifferences);\r\n    weights[0] = value;\r\n    weights[l] = value;\r\n    controlPoints.forEach((i) => (weights[i] = value));\r\n  }\r\n\r\n  return {\r\n    corrected: y.map((e, i) => e - baseline[i]),\r\n    baseline,\r\n    iteration,\r\n    error: sumNegDifferences,\r\n  };\r\n\r\n  function calculateError(e, i) {\r\n    let diff = e - baseline[i];\r\n    if (diff < 0) sumNegDifferences += diff;\r\n    return diff;\r\n  }\r\n}\r\n\r\nexport { airPLS as default };\r\n","import { isAnyArray } from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","import airpls from 'ml-airpls';\nimport sequentialFill from 'ml-array-sequential-fill';\n/**\n * Adaptive iteratively reweighted penalized least squares [1]\n *\n * This function calls ml-airpls\n *\n * References:\n * [1] Zhang, Z.-M.; Chen, S.; Liang, Y.-Z.\n * Baseline Correction Using Adaptive Iteratively Reweighted Penalized Least Squares.\n * Analyst 2010, 135 (5), 1138–1146. https://doi.org/10.1039/B922045C.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {object} [options.regression] - Options for the regression\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.regression.§Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function airPLSBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n  let output = airpls(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","export default function maybeToPrecision(value, digits) {\n  if (value < 0) {\n    value = 0 - value;\n    if (typeof digits === 'number') {\n      return `- ${value.toPrecision(digits)}`;\n    } else {\n      return `- ${value.toString()}`;\n    }\n  } else {\n    if (typeof digits === 'number') {\n      return value.toPrecision(digits);\n    } else {\n      return value.toString();\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nexport default function checkArraySize(x, y) {\n  if (!isAnyArray(x) || !isAnyArray(y)) {\n    throw new TypeError('x and y must be arrays');\n  }\n  if (x.length !== y.length) {\n    throw new RangeError('x and y arrays must have the same length');\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nexport { default as maybeToPrecision } from './maybeToPrecision';\nexport { default as checkArrayLength } from './checkArrayLength';\n\nexport default class BaseRegression {\n  constructor() {\n    if (new.target === BaseRegression) {\n      throw new Error('BaseRegression must be subclassed');\n    }\n  }\n\n  predict(x) {\n    if (typeof x === 'number') {\n      return this._predict(x);\n    } else if (isAnyArray(x)) {\n      const y = [];\n      for (let i = 0; i < x.length; i++) {\n        y.push(this._predict(x[i]));\n      }\n      return y;\n    } else {\n      throw new TypeError('x must be a number or array');\n    }\n  }\n\n  _predict() {\n    throw new Error('_predict must be implemented');\n  }\n\n  train() {\n    // Do nothing for this package\n  }\n\n  toString() {\n    return '';\n  }\n\n  toLaTeX() {\n    return '';\n  }\n\n  /**\n   * Return the correlation coefficient of determination (r) and chi-square.\n   * @param {Array<number>} x\n   * @param {Array<number>} y\n   * @return {object}\n   */\n  score(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y) || x.length !== y.length) {\n      throw new Error('x and y must be arrays of the same length');\n    }\n\n    const n = x.length;\n    const y2 = new Array(n);\n    for (let i = 0; i < n; i++) {\n      y2[i] = this._predict(x[i]);\n    }\n\n    let xSum = 0;\n    let ySum = 0;\n    let chi2 = 0;\n    let rmsd = 0;\n    let xSquared = 0;\n    let ySquared = 0;\n    let xY = 0;\n    for (let i = 0; i < n; i++) {\n      xSum += y2[i];\n      ySum += y[i];\n      xSquared += y2[i] * y2[i];\n      ySquared += y[i] * y[i];\n      xY += y2[i] * y[i];\n      if (y[i] !== 0) {\n        chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n      }\n      rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n    }\n\n    const r =\n      (n * xY - xSum * ySum) /\n      Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n\n    return {\n      r: r,\n      r2: r * r,\n      chi2: chi2,\n      rmsd: Math.sqrt(rmsd / n),\n    };\n  }\n}\n","import { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\nimport BaseRegression, {\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\n\nexport default class PolynomialRegression extends BaseRegression {\n  constructor(x, y, degree) {\n    super();\n    if (x === true) {\n      this.degree = y.degree;\n      this.powers = y.powers;\n      this.coefficients = y.coefficients;\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y, degree);\n    }\n  }\n\n  _predict(x) {\n    let y = 0;\n    for (let k = 0; k < this.powers.length; k++) {\n      y += this.coefficients[k] * Math.pow(x, this.powers[k]);\n    }\n    return y;\n  }\n\n  toJSON() {\n    return {\n      name: 'polynomialRegression',\n      degree: this.degree,\n      powers: this.powers,\n      coefficients: this.coefficients,\n    };\n  }\n\n  toString(precision) {\n    return this._toFormula(precision, false);\n  }\n\n  toLaTeX(precision) {\n    return this._toFormula(precision, true);\n  }\n\n  _toFormula(precision, isLaTeX) {\n    let sup = '^';\n    let closeSup = '';\n    let times = ' * ';\n    if (isLaTeX) {\n      sup = '^{';\n      closeSup = '}';\n      times = '';\n    }\n\n    let fn = '';\n    let str = '';\n    for (let k = 0; k < this.coefficients.length; k++) {\n      str = '';\n      if (this.coefficients[k] !== 0) {\n        if (this.powers[k] === 0) {\n          str = maybeToPrecision(this.coefficients[k], precision);\n        } else {\n          if (this.powers[k] === 1) {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x`;\n          } else {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x${sup}${this.powers[k]}${closeSup}`;\n          }\n        }\n\n        if (this.coefficients[k] > 0 && k !== this.coefficients.length - 1) {\n          str = ` + ${str}`;\n        } else if (k !== this.coefficients.length - 1) {\n          str = ` ${str}`;\n        }\n      }\n      fn = str + fn;\n    }\n    if (fn.charAt(0) === '+') {\n      fn = fn.slice(1);\n    }\n\n    return `f(x) = ${fn}`;\n  }\n\n  static load(json) {\n    if (json.name !== 'polynomialRegression') {\n      throw new TypeError('not a polynomial regression model');\n    }\n    return new PolynomialRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y, degree) {\n  const n = x.length;\n  let powers;\n  if (Array.isArray(degree)) {\n    powers = degree;\n    degree = powers.length;\n  } else {\n    degree++;\n    powers = new Array(degree);\n    for (let k = 0; k < degree; k++) {\n      powers[k] = k;\n    }\n  }\n  const F = new Matrix(n, degree);\n  const Y = new Matrix([y]);\n  for (let k = 0; k < degree; k++) {\n    for (let i = 0; i < n; i++) {\n      if (powers[k] === 0) {\n        F.set(i, k, 1);\n      } else {\n        F.set(i, k, Math.pow(x[i], powers[k]));\n      }\n    }\n  }\n\n  const FT = new MatrixTransposeView(F);\n  const A = FT.mmul(F);\n  const B = FT.mmul(new MatrixTransposeView(Y));\n\n  pr.degree = degree - 1;\n  pr.powers = powers;\n  pr.coefficients = solve(A, B).to1DArray();\n}\n","import PolynomialRegression from 'ml-regression-polynomial';\r\n\r\n/**\r\n * Iterative regression-based baseline correction\r\n * @param {Array<number>} x - Independent axis variable\r\n * @param {Array<number>} y - Dependent axis variable\r\n * @param {object} [options] - Options object\r\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\r\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\r\n * @param {*} [options.regressionOptions] - Options for regressionFunction\r\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\r\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\r\n */\r\nexport default function baselineCorrectionRegression(x, y, options = {}) {\r\n  let {\r\n    maxIterations = 100,\r\n    Regression = PolynomialRegression,\r\n    regressionOptions,\r\n    tolerance = 0.001,\r\n  } = options;\r\n\r\n  if (!regressionOptions && Regression === PolynomialRegression) {\r\n    regressionOptions = 3;\r\n  }\r\n\r\n  let baseline = y.slice();\r\n  let fitting = y.slice();\r\n  let oldFitting = y;\r\n  let iteration = 0;\r\n  let delta;\r\n  let regression;\r\n  while (iteration < maxIterations) {\r\n    // Calculate the fitting result\r\n    regression = new Regression(x, baseline, regressionOptions);\r\n\r\n    delta = 0;\r\n    for (let i = 0; i < baseline.length; i++) {\r\n      fitting[i] = regression.predict(x[i]);\r\n      if (baseline[i] > fitting[i]) {\r\n        baseline[i] = fitting[i];\r\n      }\r\n\r\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\r\n    }\r\n\r\n    // Stop criterion\r\n    if (delta < tolerance) {\r\n      break;\r\n    } else {\r\n      oldFitting = fitting.slice();\r\n      iteration++;\r\n    }\r\n  }\r\n\r\n  // removes baseline\r\n  let corrected = new Array(baseline.length);\r\n  for (let j = 0; j < baseline.length; j++) {\r\n    corrected[j] = y[j] - baseline[j];\r\n  }\r\n\r\n  return {\r\n    corrected,\r\n    delta,\r\n    iteration,\r\n    baseline,\r\n    regression: regression,\r\n  };\r\n}\r\n","import sequentialFill from 'ml-array-sequential-fill';\nimport baselineCorrection from 'ml-baseline-correction-regression';\n\n/**\n * Iterative polynomial fitting [1]\n *\n * Implementation based on ml-baseline-correction-regression\n *\n * References:\n * [1] Gan, F.; Ruan, G.; Mo, J.\n * Baseline Correction by Improved Iterative Polynomial Fitting with Automatic Threshold.\n *  Chemometrics and Intelligent Laboratory Systems 2006, 82 (1), 59–65.\n * https://doi.org/10.1016/j.chemolab.2005.08.009.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {Object} [options.regression]\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {Object} [options.regression]\n * @param {function} [options.regression.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {Object} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function iterativePolynomialBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n\n  let output = baselineCorrection(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is valdi\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n/**\n * XCheckLengths.\n *\n * @param array1 - First array.\n * @param array2 - Second array.\n */\nexport function xCheckLengths(array1, array2) {\n    if (array1.length !== array2.length) {\n        throw new TypeError('Length of array1 and array2 must be identical');\n    }\n}\n//# sourceMappingURL=xCheck.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction sum(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport { sum as default };\n","import sum from 'ml-array-sum';\n\nfunction mean(input) {\n  return sum(input) / input.length;\n}\n\nexport { mean as default };\n","import { xCheck } from './xCheck';\n/**\n * This function pads an array\n *\n *\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm = '' } = options;\n    xCheck(array);\n    if (!algorithm) {\n        if (array instanceof Float64Array) {\n            return array.slice();\n        }\n        else {\n            return Float64Array.from(array);\n        }\n    }\n    let result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    let fromEnd = size + array.length;\n    let toEnd = 2 * size + array.length;\n    switch (algorithm.toLowerCase()) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array[array.length - 1];\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw Error('xPadding: unknown algorithm');\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param fct - callback function that from an array returns a value.\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function')\n        throw Error('fct has to be a function');\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    array = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < array.length - window + 1; i++) {\n        let subArray = new Float64Array(array.buffer, i * 8, window);\n        // we will send a view to the original buffer\n        newArray.push(fct(subArray));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import mean from 'ml-array-mean';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, mean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import median from 'ml-array-median';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, median, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { xRollingAverage } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingAverageBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window: window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = Object.assign({}, defaults, options);\n  let baseline = xRollingAverage(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","import { isAnyArray } from 'is-any-array';\nimport { xMean, xMaxValue, xMinValue } from 'ml-spectra-processing';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n * @export\n * @param {Array} spectrum\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the spectrum length\n */\nexport function rollingBall(spectrum, options = {}) {\n  if (!isAnyArray(spectrum)) {\n    throw new Error('Spectrum must be an array');\n  }\n\n  if (spectrum.length === 0) {\n    throw new TypeError('Spectrum must not be empty');\n  }\n\n  const numberPoints = spectrum.length;\n  const maxima = new Float64Array(numberPoints);\n  const minima = new Float64Array(numberPoints);\n  const baseline = new Float64Array(numberPoints);\n\n  // windowM 4 percent of spectrum length\n  // windowS 8 percent of spectrum length\n  const {\n    windowM = Math.round(numberPoints * 0.04),\n    windowS = Math.round(numberPoints * 0.08),\n  } = options;\n\n  // fi(1) in original paper\n  for (let i = 0; i < spectrum.length; i++) {\n    let windowLeft = Math.max(0, i - windowM);\n    let windowRight = Math.min(i + windowM + 1, spectrum.length);\n\n    minima[i] = xMinValue(spectrum, {\n      fromIndex: windowLeft,\n      toIndex: windowRight,\n    });\n  }\n\n  // fi in original paper\n  for (let i = 0; i < minima.length; i++) {\n    let windowLeft = Math.max(0, i - windowM);\n    let windowRight = Math.min(i + windowM + 1, minima.length);\n    maxima[i] = xMaxValue(minima, {\n      fromIndex: windowLeft,\n      toIndex: windowRight,\n    });\n  }\n\n  for (let i = 0; i < minima.length; i++) {\n    let windowLeft = Math.max(0, i - windowS);\n    let windowRight = Math.min(i + windowS + 1, maxima.length);\n    baseline[i] = xMean(maxima.subarray(windowLeft, windowRight));\n  }\n\n  return baseline;\n}\n","import { rollingBall } from 'ml-rolling-ball-baseline';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Algorithm described in (1), but in the implementation here the window width does not change.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the specturm length\n * @returns {BaselineOutput}\n */\nexport function rollingBallBaseline(ys, options = {}) {\n  const baseline = rollingBall(ys, options);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","import { xRollingMedian } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingMedianBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window: window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = Object.assign({}, defaults, options);\n  let baseline = xRollingMedian(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","//@ts-expect-error no type definition for baselines\nimport { airPLSBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function airPLSBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=airPLSBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { iterativePolynomialBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function iterativePolynomialBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=iterativePolynomialBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingAverageBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingAverageBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingAverageBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingBallBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingBallBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingBallBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingMedianBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingMedianBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingMedianBaseline.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Apply Savitzky Golay algorithm\n * @param [ys] Array of y values\n * @param [xs] Array of X or deltaX\n * @return  Array containing the new ys (same length)\n */\nexport function sgg(ys, xs, options = {}) {\n    let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\n    }\n    if (!isAnyArray(ys)) {\n        throw new TypeError('Y values must be an array');\n    }\n    if (typeof xs === 'undefined') {\n        throw new TypeError('X must be defined');\n    }\n    if (windowSize > ys.length) {\n        throw new RangeError(`Window size is higher than the data length ${windowSize}>${ys.length}`);\n    }\n    if (derivative < 0 || !Number.isInteger(derivative)) {\n        throw new RangeError('Derivative should be a positive integer');\n    }\n    if (polynomial < 1 || !Number.isInteger(polynomial)) {\n        throw new RangeError('Polynomial should be a positive integer');\n    }\n    if (polynomial >= 6) {\n        // eslint-disable-next-line no-console\n        console.warn('You should not use polynomial grade higher than 5 if you are' +\n            ' not sure that your data arises from such a model. Possible polynomial oscillation problems');\n    }\n    let half = Math.floor(windowSize / 2);\n    let np = ys.length;\n    let ans = new Float64Array(np);\n    let weights = fullWeights(windowSize, polynomial, derivative);\n    let hs = 0;\n    let constantH = true;\n    if (isAnyArray(xs)) {\n        constantH = false;\n    }\n    else {\n        hs = Math.pow(xs, derivative);\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        let wg1 = weights[half - i - 1];\n        let wg2 = weights[half + i + 1];\n        let d1 = 0;\n        let d2 = 0;\n        for (let l = 0; l < windowSize; l++) {\n            d1 += wg1[l] * ys[l];\n            d2 += wg2[l] * ys[np - windowSize + l];\n        }\n        if (constantH) {\n            ans[half - i - 1] = d1 / hs;\n            ans[np - half + i] = d2 / hs;\n        }\n        else {\n            hs = getHs(xs, half - i - 1, half, derivative);\n            ans[half - i - 1] = d1 / hs;\n            hs = getHs(xs, np - half + i, half, derivative);\n            ans[np - half + i] = d2 / hs;\n        }\n    }\n    //For the internal points\n    let wg = weights[half];\n    for (let i = windowSize; i <= np; i++) {\n        let d = 0;\n        for (let l = 0; l < windowSize; l++)\n            d += wg[l] * ys[l + i - windowSize];\n        if (!constantH) {\n            hs = getHs(xs, i - half - 1, half, derivative);\n        }\n        ans[i - half - 1] = d / hs;\n    }\n    return ans;\n}\nfunction getHs(h, center, half, derivative) {\n    let hs = 0;\n    let count = 0;\n    for (let i = center - half; i < center + half; i++) {\n        if (i >= 0 && i < h.length - 1) {\n            hs += h[i + 1] - h[i];\n            count++;\n        }\n    }\n    return Math.pow(hs / count, derivative);\n}\nfunction gramPoly(i, m, k, s) {\n    let Grampoly = 0;\n    if (k > 0) {\n        Grampoly =\n            ((4 * k - 2) / (k * (2 * m - k + 1))) *\n                (i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -\n                (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n                    gramPoly(i, m, k - 2, s);\n    }\n    else {\n        if (k === 0 && s === 0) {\n            Grampoly = 1;\n        }\n        else {\n            Grampoly = 0;\n        }\n    }\n    return Grampoly;\n}\nfunction genFact(a, b) {\n    let gf = 1;\n    if (a >= b) {\n        for (let j = a - b + 1; j <= a; j++) {\n            gf *= j;\n        }\n    }\n    return gf;\n}\nfunction weight(i, t, m, n, s) {\n    let sum = 0;\n    for (let k = 0; k <= n; k++) {\n        sum +=\n            (2 * k + 1) *\n                (genFact(2 * m, k) / genFact(2 * m + k + 1, k + 1)) *\n                gramPoly(i, m, k, 0) *\n                gramPoly(t, m, k, s);\n    }\n    return sum;\n}\n/**\n * @private\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n    let weights = new Array(m);\n    let np = Math.floor(m / 2);\n    for (let t = -np; t <= np; t++) {\n        weights[t + np] = new Float64Array(m);\n        for (let j = -np; j <= np; j++) {\n            weights[t + np][j + np] = weight(j, t, np, n, s);\n        }\n    }\n    return weights;\n}\n//# sourceMappingURL=index.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the first derivative using Savitzky–Golay filter.\n * @param data\n */\nexport function firstDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 1 }) } };\n}\n//# sourceMappingURL=firstDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the second derivative using Savitzky–Golay filter.\n * @param data\n */\nexport function secondDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 2 }) } };\n}\n//# sourceMappingURL=secondDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the third derivative using Savitzky–Golay filter.\n * @param data\n */\nexport function thirdDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 3 }) } };\n}\n//# sourceMappingURL=thirdDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Apply the Savitzky Golay Generalized Filter\n * @param data\n */\nexport function savitzkyGolay(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, options) } };\n}\n//# sourceMappingURL=savitzkyGolay.js.map","import { xyEnsureGrowingX } from 'ml-spectra-processing';\n/**\n * Ensure X values are strictly monotonic increasing\n * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html\n * @param data\n */\nexport function ensureGrowing(data) {\n    return { data: xyEnsureGrowingX(data) };\n}\n//# sourceMappingURL=ensureGrowing.js.map","import { xyEquallySpaced } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function equallySpaced(data, options = {}) {\n    return { data: xyEquallySpaced(data, options) };\n}\n//# sourceMappingURL=equallySpaced.js.map","import { xyFilterX } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function filterX(data, options = {}) {\n    return {\n        data: xyFilterX(data, options),\n    };\n}\n//# sourceMappingURL=filterX.js.map","import { xEnsureFloat64 } from 'ml-spectra-processing';\nimport * as Filters from './filters/filters';\n/**\n * Apply filters on {x:[], y:[]}\n * @returns A very important number\n */\nexport function filterXY(data, filters) {\n    let result = {\n        data: { x: xEnsureFloat64(data.x), y: xEnsureFloat64(data.y) },\n    };\n    const logs = [];\n    for (let filter of filters) {\n        const start = Date.now();\n        // eslint-disable-next-line import/namespace\n        const filterFct = Filters[filter.name];\n        if (!filterFct) {\n            throw new Error(`Unknown filter: ${filter.name}`);\n        }\n        // @ts-expect-error some method have options and some other ones don't have any options\n        result = filterFct(result.data, filter.options);\n        logs.push({\n            name: filter.name,\n            time: Date.now() - start,\n        });\n    }\n    return { logs, data: result.data };\n}\n//# sourceMappingURL=filterXY.js.map","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { filterXY } from 'ml-signal-processing';\nimport { xIsMonotone } from 'ml-spectra-processing';\nexport function getNormalizedSpectrum(spectrum, options = {}) {\n    var _a;\n    let data = {\n        x: spectrum.variables.x.data,\n        y: spectrum.variables.y.data,\n    };\n    let newSpectrum = {\n        variables: {\n            x: {\n                data: spectrum.variables.x.data,\n                units: spectrum.variables.x.units,\n                label: spectrum.variables.x.label,\n            },\n            y: {\n                data: spectrum.variables.y.data,\n                units: spectrum.variables.y.units,\n                label: spectrum.variables.y.label,\n            },\n        },\n    };\n    if (spectrum.title)\n        newSpectrum.title = spectrum.title;\n    if (spectrum.dataType)\n        newSpectrum.dataType = spectrum.dataType;\n    if (spectrum.meta)\n        newSpectrum.meta = spectrum.meta;\n    let { from = spectrum.variables.x.min, to = spectrum.variables.x.max, numberOfPoints, filters = [], exclusions = [], zones = [], } = options;\n    filters = JSON.parse(JSON.stringify(filters));\n    if (numberOfPoints) {\n        filters.push({\n            name: 'equallySpaced',\n            options: { from, to, exclusions, zones, numberOfPoints },\n        });\n    }\n    else {\n        filters.push({\n            name: 'filterX',\n            options: { from, to, exclusions, zones },\n        });\n    }\n    let { x, y } = filterXY(data, filters).data;\n    // filters change the y axis, we get rid of the units\n    // TODO we should deal correctly with this problem\n    if (filters.length > 1) {\n        newSpectrum.variables.y.units = '';\n        newSpectrum.variables.y.label = (_a = newSpectrum.variables.y.label) === null || _a === void 0 ? void 0 : _a.replace(/\\s*\\[.*\\]/, '');\n    }\n    newSpectrum.variables.x.data = x;\n    newSpectrum.variables.x.min = min(x);\n    newSpectrum.variables.x.max = max(x);\n    newSpectrum.variables.x.isMonotone = xIsMonotone(x);\n    newSpectrum.variables.y.data = y;\n    newSpectrum.variables.y.min = min(y);\n    newSpectrum.variables.y.max = max(y);\n    newSpectrum.variables.y.isMonotone = xIsMonotone(y);\n    return newSpectrum;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Tm9ybWFsaXplZFNwZWN0cnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZ2V0Tm9ybWFsaXplZFNwZWN0cnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtwRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFFBQWtCLEVBQ2xCLFVBQXFDLEVBQUU7O0lBRXZDLElBQUksSUFBSSxHQUFHO1FBQ1QsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDNUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7S0FDN0IsQ0FBQztJQUNGLElBQUksV0FBVyxHQUFhO1FBQzFCLFNBQVMsRUFBRTtZQUNULENBQUMsRUFBRTtnQkFDRCxJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDL0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2pDLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLO2FBQ2xDO1lBQ0QsQ0FBQyxFQUFFO2dCQUNELElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUMvQixLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFDakMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUs7YUFDbEM7U0FDRjtLQUNGLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQyxLQUFL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","/*\nThe MIT License (MIT)\nCopyright © 2006-2007 Kevin C. Olbrich\nCopyright © 2010-2016 LIM SAS (http://lim.eu) - Julien Sanchez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Qty = factory());\n}(this, (function () { 'use strict';\n\n  /**\n   * Tests if a value is a string\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a string, false otherwise\n   */\n  function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n  }\n\n  /*\n   * Prefer stricter Number.isFinite if currently supported.\n   * To be dropped when ES6 is finalized. Obsolete browsers will\n   * have to use ES6 polyfills.\n   */\n  var isFiniteImpl = Number.isFinite || window.isFinite;\n  /**\n   * Tests if a value is a number\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a number, false otherwise\n   */\n  function isNumber(value) {\n    // Number.isFinite allows not to consider NaN or '1' as numbers\n    return isFiniteImpl(value);\n  }\n\n  /*\n   * Identity function\n   */\n  function identity(value) {\n    return value;\n  }\n\n  /**\n   * Returns unique strings from list\n   *\n   * @param {string[]} strings - array of strings\n   *\n   *\n   * @returns {string[]} a new array of strings without duplicates\n   */\n  function uniq(strings) {\n    var seen = {};\n    return strings.filter(function(item) {\n      return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n    });\n  }\n\n  function compareArray(array1, array2) {\n    if (array2.length !== array1.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array2[i].compareArray) {\n        if (!array2[i].compareArray(array1[i])) {\n          return false;\n        }\n      }\n      if (array2[i] !== array1[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function assign(target, properties) {\n    Object.keys(properties).forEach(function(key) {\n      target[key] = properties[key];\n    });\n  }\n\n  /**\n   * Safely multiplies numbers while avoiding floating errors\n   * like 0.1 * 0.1 => 0.010000000000000002\n   *\n   * @param {...number} numbers - numbers to multiply\n   *\n   * @returns {number} result\n   */\n  function mulSafe() {\n    var result = 1, decimals = 0;\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      decimals = decimals + getFractional(arg);\n      result *= arg;\n    }\n\n    return decimals !== 0 ? round(result, decimals) : result;\n  }\n\n  /**\n   * Safely divides two numbers while avoiding floating errors\n   * like 0.3 / 0.05 => 5.999999999999999\n   *\n   * @returns {number} result\n   * @param {number} num Numerator\n   * @param {number} den Denominator\n   */\n  function divSafe(num, den) {\n    if (den === 0) {\n      throw new Error(\"Divide by zero\");\n    }\n\n    var factor = Math.pow(10, getFractional(den));\n    var invDen = factor / (factor * den);\n\n    return mulSafe(num, invDen);\n  }\n\n  /**\n   * Rounds value at the specified number of decimals\n   *\n   * @param {number} val - value to round\n   * @param {number} decimals - number of decimals\n   *\n   * @returns {number} rounded number\n   */\n  function round(val, decimals) {\n    return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n  }\n\n  function getFractional(num) {\n    // Check for NaNs or Infinities\n    if (!isFinite(num)) {\n      return 0;\n    }\n\n    // Faster than parsing strings\n    // http://jsperf.com/count-decimals/2\n    var count = 0;\n    while (num % 1 !== 0) {\n      num *= 10;\n      count++;\n    }\n    return count;\n  }\n\n  /**\n   * Custom error type definition\n   * @constructor\n   */\n  function QtyError() {\n    var err;\n    if (!this) { // Allows to instantiate QtyError without new()\n      err = Object.create(QtyError.prototype);\n      QtyError.apply(err, arguments);\n      return err;\n    }\n    err = Error.apply(this, arguments);\n    this.name = \"QtyError\";\n    this.message = err.message;\n    this.stack = err.stack;\n  }\n  QtyError.prototype = Object.create(Error.prototype, {constructor: { value: QtyError }});\n\n  /*\n   * Throws incompatible units error\n   * @param {string} left - units\n   * @param {string} right - units incompatible with first argument\n   * @throws \"Incompatible units\" error\n   */\n  function throwIncompatibleUnits(left, right) {\n    throw new QtyError(\"Incompatible units: \" + left + \" and \" + right);\n  }\n\n  var UNITS = {\n    /* prefixes */\n    \"<googol>\" : [[\"googol\"], 1e100, \"prefix\"],\n    \"<kibi>\"  :  [[\"Ki\",\"Kibi\",\"kibi\"], Math.pow(2,10), \"prefix\"],\n    \"<mebi>\"  :  [[\"Mi\",\"Mebi\",\"mebi\"], Math.pow(2,20), \"prefix\"],\n    \"<gibi>\"  :  [[\"Gi\",\"Gibi\",\"gibi\"], Math.pow(2,30), \"prefix\"],\n    \"<tebi>\"  :  [[\"Ti\",\"Tebi\",\"tebi\"], Math.pow(2,40), \"prefix\"],\n    \"<pebi>\"  :  [[\"Pi\",\"Pebi\",\"pebi\"], Math.pow(2,50), \"prefix\"],\n    \"<exi>\"   :  [[\"Ei\",\"Exi\",\"exi\"], Math.pow(2,60), \"prefix\"],\n    \"<zebi>\"  :  [[\"Zi\",\"Zebi\",\"zebi\"], Math.pow(2,70), \"prefix\"],\n    \"<yebi>\"  :  [[\"Yi\",\"Yebi\",\"yebi\"], Math.pow(2,80), \"prefix\"],\n    \"<yotta>\" :  [[\"Y\",\"Yotta\",\"yotta\"], 1e24, \"prefix\"],\n    \"<zetta>\" :  [[\"Z\",\"Zetta\",\"zetta\"], 1e21, \"prefix\"],\n    \"<exa>\"   :  [[\"E\",\"Exa\",\"exa\"], 1e18, \"prefix\"],\n    \"<peta>\"  :  [[\"P\",\"Peta\",\"peta\"], 1e15, \"prefix\"],\n    \"<tera>\"  :  [[\"T\",\"Tera\",\"tera\"], 1e12, \"prefix\"],\n    \"<giga>\"  :  [[\"G\",\"Giga\",\"giga\"], 1e9, \"prefix\"],\n    \"<mega>\"  :  [[\"M\",\"Mega\",\"mega\"], 1e6, \"prefix\"],\n    \"<kilo>\"  :  [[\"k\",\"kilo\"], 1e3, \"prefix\"],\n    \"<hecto>\" :  [[\"h\",\"Hecto\",\"hecto\"], 1e2, \"prefix\"],\n    \"<deca>\"  :  [[\"da\",\"Deca\",\"deca\",\"deka\"], 1e1, \"prefix\"],\n    \"<deci>\"  :  [[\"d\",\"Deci\",\"deci\"], 1e-1, \"prefix\"],\n    \"<centi>\"  : [[\"c\",\"Centi\",\"centi\"], 1e-2, \"prefix\"],\n    \"<milli>\" :  [[\"m\",\"Milli\",\"milli\"], 1e-3, \"prefix\"],\n    \"<micro>\"  : [\n      [\"u\",\"\\u03BC\"/*µ as greek letter*/,\"\\u00B5\"/*µ as micro sign*/,\"Micro\",\"mc\",\"micro\"],\n      1e-6,\n      \"prefix\"\n    ],\n    \"<nano>\"  :  [[\"n\",\"Nano\",\"nano\"], 1e-9, \"prefix\"],\n    \"<pico>\"  :  [[\"p\",\"Pico\",\"pico\"], 1e-12, \"prefix\"],\n    \"<femto>\" :  [[\"f\",\"Femto\",\"femto\"], 1e-15, \"prefix\"],\n    \"<atto>\"  :  [[\"a\",\"Atto\",\"atto\"], 1e-18, \"prefix\"],\n    \"<zepto>\" :  [[\"z\",\"Zepto\",\"zepto\"], 1e-21, \"prefix\"],\n    \"<yocto>\" :  [[\"y\",\"Yocto\",\"yocto\"], 1e-24, \"prefix\"],\n\n    \"<1>\"     :  [[\"1\", \"<1>\"], 1, \"\"],\n    /* length units */\n    \"<meter>\" :  [[\"m\",\"meter\",\"meters\",\"metre\",\"metres\"], 1.0, \"length\", [\"<meter>\"] ],\n    \"<inch>\"  :  [[\"in\",\"inch\",\"inches\",\"\\\"\"], 0.0254, \"length\", [\"<meter>\"]],\n    \"<foot>\"  :  [[\"ft\",\"foot\",\"feet\",\"'\"], 0.3048, \"length\", [\"<meter>\"]],\n    \"<yard>\"  :  [[\"yd\",\"yard\",\"yards\"], 0.9144, \"length\", [\"<meter>\"]],\n    \"<mile>\"  :  [[\"mi\",\"mile\",\"miles\"], 1609.344, \"length\", [\"<meter>\"]],\n    \"<naut-mile>\" : [[\"nmi\",\"naut-mile\"], 1852, \"length\", [\"<meter>\"]],\n    \"<league>\":  [[\"league\",\"leagues\"], 4828, \"length\", [\"<meter>\"]],\n    \"<furlong>\": [[\"furlong\",\"furlongs\"], 201.2, \"length\", [\"<meter>\"]],\n    \"<rod>\"   :  [[\"rd\",\"rod\",\"rods\"], 5.029, \"length\", [\"<meter>\"]],\n    \"<mil>\"   :  [[\"mil\",\"mils\"], 0.0000254, \"length\", [\"<meter>\"]],\n    \"<angstrom>\"  :[[\"ang\",\"angstrom\",\"angstroms\"], 1e-10, \"length\", [\"<meter>\"]],\n    \"<fathom>\" : [[\"fathom\",\"fathoms\"], 1.829, \"length\", [\"<meter>\"]],\n    \"<pica>\"  : [[\"pica\",\"picas\"], 0.00423333333, \"length\", [\"<meter>\"]],\n    \"<point>\" : [[\"pt\",\"point\",\"points\"], 0.000352777778, \"length\", [\"<meter>\"]],\n    \"<redshift>\" : [[\"z\",\"red-shift\", \"redshift\"], 1.302773e26, \"length\", [\"<meter>\"]],\n    \"<AU>\"    : [[\"AU\",\"astronomical-unit\"], 149597900000, \"length\", [\"<meter>\"]],\n    \"<light-second>\":[[\"ls\",\"light-second\"], 299792500, \"length\", [\"<meter>\"]],\n    \"<light-minute>\":[[\"lmin\",\"light-minute\"], 17987550000, \"length\", [\"<meter>\"]],\n    \"<light-year>\" : [[\"ly\",\"light-year\"], 9460528000000000, \"length\", [\"<meter>\"]],\n    \"<parsec>\"  : [[\"pc\",\"parsec\",\"parsecs\"], 30856780000000000, \"length\", [\"<meter>\"]],\n    \"<datamile>\"  :  [[\"DM\",\"datamile\"], 1828.8, \"length\", [\"<meter>\"]],\n\n    /* mass */\n    \"<kilogram>\" : [[\"kg\",\"kilogram\",\"kilograms\"], 1.0, \"mass\", [\"<kilogram>\"]],\n    \"<AMU>\" : [[\"u\",\"AMU\",\"amu\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<dalton>\" : [[\"Da\",\"Dalton\",\"Daltons\",\"dalton\",\"daltons\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<slug>\" : [[\"slug\",\"slugs\"], 14.5939029, \"mass\", [\"<kilogram>\"]],\n    \"<short-ton>\" : [[\"tn\",\"ton\",\"short-ton\"], 907.18474, \"mass\", [\"<kilogram>\"]],\n    \"<metric-ton>\":[[\"tonne\",\"metric-ton\"], 1000, \"mass\", [\"<kilogram>\"]],\n    \"<carat>\" : [[\"ct\",\"carat\",\"carats\"], 0.0002, \"mass\", [\"<kilogram>\"]],\n    \"<pound>\" : [[\"lbs\",\"lb\",\"pound\",\"pounds\",\"#\"], 0.45359237, \"mass\", [\"<kilogram>\"]],\n    \"<ounce>\" : [[\"oz\",\"ounce\",\"ounces\"], 0.0283495231, \"mass\", [\"<kilogram>\"]],\n    \"<gram>\"    :  [[\"g\",\"gram\",\"grams\",\"gramme\",\"grammes\"], 1e-3, \"mass\", [\"<kilogram>\"]],\n    \"<grain>\" : [[\"grain\",\"grains\",\"gr\"], 6.479891e-5, \"mass\", [\"<kilogram>\"]],\n    \"<dram>\"  : [[\"dram\",\"drams\",\"dr\"], 0.0017718452, \"mass\",[\"<kilogram>\"]],\n    \"<stone>\" : [[\"stone\",\"stones\",\"st\"],6.35029318, \"mass\",[\"<kilogram>\"]],\n\n    /* area */\n    \"<hectare>\":[[\"hectare\"], 10000, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<acre>\":[[\"acre\",\"acres\"], 4046.85642, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<sqft>\":[[\"sqft\"], 1, \"area\", [\"<foot>\",\"<foot>\"]],\n\n    /* volume */\n    \"<liter>\" : [[\"l\",\"L\",\"liter\",\"liters\",\"litre\",\"litres\"], 0.001, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon>\":  [[\"gal\",\"gallon\",\"gallons\"], 0.0037854118, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon-imp>\":  [[\"galimp\",\"gallon-imp\",\"gallons-imp\"], 0.0045460900, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<quart>\":  [[\"qt\",\"quart\",\"quarts\"], 0.00094635295, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint>\":  [[\"pt\",\"pint\",\"pints\"], 0.000473176475, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint-imp>\":  [[\"ptimp\",\"pint-imp\",\"pints-imp\"], 5.6826125e-4, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<cup>\":  [[\"cu\",\"cup\",\"cups\"], 0.000236588238, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce>\":  [[\"floz\",\"fluid-ounce\",\"fluid-ounces\"], 2.95735297e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce-imp>\":  [[\"flozimp\", \"floz-imp\",\"fluid-ounce-imp\",\"fluid-ounces-imp\"], 2.84130625e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<tablespoon>\":  [[\"tb\",\"tbsp\",\"tbs\",\"tablespoon\",\"tablespoons\"], 1.47867648e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<teaspoon>\":  [[\"tsp\",\"teaspoon\",\"teaspoons\"], 4.92892161e-6, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<bushel>\":  [[\"bu\",\"bsh\",\"bushel\",\"bushels\"], 0.035239072, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<oilbarrel>\":  [[\"bbl\",\"oilbarrel\", \"oilbarrels\", \"oil-barrel\",\"oil-barrels\"], 0.158987294928, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel>\":  [[\"bl\",\"bl-us\",\"beerbarrel\", \"beerbarrels\", \"beer-barrel\",\"beer-barrels\"], 0.1173477658, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel-imp>\":  [[\"blimp\",\"bl-imp\",\"beerbarrel-imp\", \"beerbarrels-imp\", \"beer-barrel-imp\",\"beer-barrels-imp\"], 0.16365924, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* speed */\n    \"<kph>\" : [[\"kph\"], 0.277777778, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<mph>\" : [[\"mph\"], 0.44704, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<knot>\" : [[\"kt\",\"kn\",\"kts\",\"knot\",\"knots\"], 0.514444444, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<fps>\"  : [[\"fps\"], 0.3048, \"speed\", [\"<meter>\"], [\"<second>\"]],\n\n    /* acceleration */\n    \"<gee>\" : [[\"gee\"], 9.80665, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<Gal>\" : [[\"Gal\"], 1e-2, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* temperature_difference */\n    \"<kelvin>\" : [[\"degK\",\"kelvin\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<celsius>\" : [[\"degC\",\"celsius\",\"celsius\",\"centigrade\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<fahrenheit>\" : [[\"degF\",\"fahrenheit\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<rankine>\" : [[\"degR\",\"rankine\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<temp-K>\"  : [[\"tempK\",\"temp-K\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-C>\"  : [[\"tempC\",\"temp-C\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-F>\"  : [[\"tempF\",\"temp-F\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-R>\"  : [[\"tempR\",\"temp-R\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n\n    /* time */\n    \"<second>\":  [[\"s\",\"sec\",\"secs\",\"second\",\"seconds\"], 1.0, \"time\", [\"<second>\"]],\n    \"<minute>\":  [[\"min\",\"mins\",\"minute\",\"minutes\"], 60.0, \"time\", [\"<second>\"]],\n    \"<hour>\":  [[\"h\",\"hr\",\"hrs\",\"hour\",\"hours\"], 3600.0, \"time\", [\"<second>\"]],\n    \"<day>\":  [[\"d\",\"day\",\"days\"], 3600 * 24, \"time\", [\"<second>\"]],\n    \"<week>\":  [[\"wk\",\"week\",\"weeks\"], 7 * 3600 * 24, \"time\", [\"<second>\"]],\n    \"<fortnight>\": [[\"fortnight\",\"fortnights\"], 1209600, \"time\", [\"<second>\"]],\n    \"<year>\":  [[\"y\",\"yr\",\"year\",\"years\",\"annum\"], 31556926, \"time\", [\"<second>\"]],\n    \"<decade>\":[[\"decade\",\"decades\"], 315569260, \"time\", [\"<second>\"]],\n    \"<century>\":[[\"century\",\"centuries\"], 3155692600, \"time\", [\"<second>\"]],\n\n    /* pressure */\n    \"<pascal>\" : [[\"Pa\",\"pascal\",\"Pascal\"], 1.0, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<bar>\" : [[\"bar\",\"bars\"], 100000, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<mmHg>\" : [[\"mmHg\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inHg>\" : [[\"inHg\"], 3386.3881472, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<torr>\" : [[\"torr\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<atm>\" : [[\"atm\",\"ATM\",\"atmosphere\",\"atmospheres\"], 101325, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<psi>\" : [[\"psi\"], 6894.76, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<cmh2o>\" : [[\"cmH2O\",\"cmh2o\"], 98.0638, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inh2o>\" : [[\"inH2O\",\"inh2o\"], 249.082052, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n\n    /* viscosity */\n    \"<poise>\"  : [[\"P\",\"poise\"], 0.1, \"viscosity\", [\"<kilogram>\"],[\"<meter>\",\"<second>\"] ],\n    \"<stokes>\" : [[\"St\",\"stokes\"], 1e-4, \"viscosity\", [\"<meter>\",\"<meter>\"], [\"<second>\"]],\n\n    /* substance */\n    \"<mole>\"  :  [[\"mol\",\"mole\"], 1.0, \"substance\", [\"<mole>\"]],\n\n    /* concentration */\n    \"<molar>\" : [[\"M\",\"molar\"], 1000, \"concentration\", [\"<mole>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<wtpercent>\"  : [[\"wt%\",\"wtpercent\"], 10, \"concentration\", [\"<kilogram>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* activity */\n    \"<katal>\" :  [[\"kat\",\"katal\",\"Katal\"], 1.0, \"activity\", [\"<mole>\"], [\"<second>\"]],\n    \"<unit>\"  :  [[\"U\",\"enzUnit\",\"unit\"], 16.667e-16, \"activity\", [\"<mole>\"], [\"<second>\"]],\n\n    /* capacitance */\n    \"<farad>\" :  [[\"F\",\"farad\",\"Farad\"], 1.0, \"capacitance\", [\"<second>\",\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<meter>\", \"<meter>\", \"<kilogram>\"]],\n\n    /* charge */\n    \"<coulomb>\" :  [[\"C\",\"coulomb\",\"Coulomb\"], 1.0, \"charge\", [\"<ampere>\",\"<second>\"]],\n    \"<Ah>\" :  [[\"Ah\"], 3600, \"charge\", [\"<ampere>\",\"<second>\"]],\n\n    /* current */\n    \"<ampere>\"  :  [[\"A\",\"Ampere\",\"ampere\",\"amp\",\"amps\"], 1.0, \"current\", [\"<ampere>\"]],\n\n    /* conductance */\n    \"<siemens>\" : [[\"S\",\"Siemens\",\"siemens\"], 1.0, \"conductance\", [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<kilogram>\",\"<meter>\",\"<meter>\"]],\n\n    /* inductance */\n    \"<henry>\" :  [[\"H\",\"Henry\",\"henry\"], 1.0, \"inductance\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]],\n\n    /* potential */\n    \"<volt>\"  :  [[\"V\",\"Volt\",\"volt\",\"volts\"], 1.0, \"potential\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\"]],\n\n    /* resistance */\n    \"<ohm>\" :  [\n      [\"Ohm\",\"ohm\",\"\\u03A9\"/*Ω as greek letter*/,\"\\u2126\"/*Ω as ohm sign*/],\n      1.0,\n      \"resistance\",\n      [\"<meter>\",\"<meter>\",\"<kilogram>\"],[\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]\n    ],\n    /* magnetism */\n    \"<weber>\" : [[\"Wb\",\"weber\",\"webers\"], 1.0, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<tesla>\"  : [[\"T\",\"tesla\",\"teslas\"], 1.0, \"magnetism\", [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<gauss>\" : [[\"G\",\"gauss\"], 1e-4, \"magnetism\",  [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<maxwell>\" : [[\"Mx\",\"maxwell\",\"maxwells\"], 1e-8, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<oersted>\"  : [[\"Oe\",\"oersted\",\"oersteds\"], 250.0 / Math.PI, \"magnetism\", [\"<ampere>\"], [\"<meter>\"]],\n\n    /* energy */\n    \"<joule>\" :  [[\"J\",\"joule\",\"Joule\",\"joules\"], 1.0, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<erg>\"   :  [[\"erg\",\"ergs\"], 1e-7, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<btu>\"   :  [[\"BTU\",\"btu\",\"BTUs\"], 1055.056, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<calorie>\" :  [[\"cal\",\"calorie\",\"calories\"], 4.18400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Calorie>\" :  [[\"Cal\",\"Calorie\",\"Calories\"], 4184.00, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<therm-US>\" : [[\"th\",\"therm\",\"therms\",\"Therm\",\"therm-US\"], 105480400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Wh>\" : [[\"Wh\"], 3600, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n\n    /* force */\n    \"<newton>\"  : [[\"N\",\"Newton\",\"newton\"], 1.0, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<dyne>\"  : [[\"dyn\",\"dyne\"], 1e-5, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<pound-force>\"  : [[\"lbf\",\"pound-force\"], 4.448222, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* frequency */\n    \"<hertz>\" : [[\"Hz\",\"hertz\",\"Hertz\"], 1.0, \"frequency\", [\"<1>\"], [\"<second>\"]],\n\n    /* angle */\n    \"<radian>\" :[[\"rad\",\"radian\",\"radians\"], 1.0, \"angle\", [\"<radian>\"]],\n    \"<degree>\" :[[\"deg\",\"degree\",\"degrees\"], Math.PI / 180.0, \"angle\", [\"<radian>\"]],\n    \"<gradian>\"   :[[\"gon\",\"grad\",\"gradian\",\"grads\"], Math.PI / 200.0, \"angle\", [\"<radian>\"]],\n    \"<steradian>\"  : [[\"sr\",\"steradian\",\"steradians\"], 1.0, \"solid_angle\", [\"<steradian>\"]],\n\n    /* rotation */\n    \"<rotation>\" : [[\"rotation\"], 2.0 * Math.PI, \"angle\", [\"<radian>\"]],\n    \"<rpm>\"   :[[\"rpm\"], 2.0 * Math.PI / 60.0, \"angular_velocity\", [\"<radian>\"], [\"<second>\"]],\n\n    /* information */\n    \"<byte>\"  :[[\"B\",\"byte\",\"bytes\"], 1.0, \"information\", [\"<byte>\"]],\n    \"<bit>\"  :[[\"b\",\"bit\",\"bits\"], 0.125, \"information\", [\"<byte>\"]],\n\n    /* information rate */\n    \"<Bps>\" : [[\"Bps\"], 1.0, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n    \"<bps>\" : [[\"bps\"], 0.125, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n\n    /* currency */\n    \"<dollar>\":[[\"USD\",\"dollar\"], 1.0, \"currency\", [\"<dollar>\"]],\n    \"<cents>\" :[[\"cents\"], 0.01, \"currency\", [\"<dollar>\"]],\n\n    /* luminosity */\n    \"<candela>\" : [[\"cd\",\"candela\"], 1.0, \"luminosity\", [\"<candela>\"]],\n    \"<lumen>\" : [[\"lm\",\"lumen\"], 1.0, \"luminous_power\", [\"<candela>\",\"<steradian>\"]],\n    \"<lux>\" :[[\"lux\"], 1.0, \"illuminance\", [\"<candela>\",\"<steradian>\"], [\"<meter>\",\"<meter>\"]],\n\n    /* power */\n    \"<watt>\"  : [[\"W\",\"watt\",\"watts\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere>\"  : [[\"VA\",\"volt-ampere\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere-reactive>\"  : [[\"var\",\"Var\",\"VAr\",\"VAR\",\"volt-ampere-reactive\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<horsepower>\"  :  [[\"hp\",\"horsepower\"], 745.699872, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n\n    /* radiation */\n    \"<gray>\" : [[\"Gy\",\"gray\",\"grays\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<roentgen>\" : [[\"R\",\"roentgen\"], 0.009330, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<sievert>\" : [[\"Sv\",\"sievert\",\"sieverts\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<becquerel>\" : [[\"Bq\",\"becquerel\",\"becquerels\"], 1.0, \"radiation\", [\"<1>\"],[\"<second>\"]],\n    \"<curie>\" : [[\"Ci\",\"curie\",\"curies\"], 3.7e10, \"radiation\", [\"<1>\"],[\"<second>\"]],\n\n    /* rate */\n    \"<cpm>\" : [[\"cpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<dpm>\" : [[\"dpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<bpm>\" : [[\"bpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n\n    /* resolution / typography */\n    \"<dot>\" : [[\"dot\",\"dots\"], 1, \"resolution\", [\"<each>\"]],\n    \"<pixel>\" : [[\"pixel\",\"px\"], 1, \"resolution\", [\"<each>\"]],\n    \"<ppi>\" : [[\"ppi\"], 1, \"resolution\", [\"<pixel>\"], [\"<inch>\"]],\n    \"<dpi>\" : [[\"dpi\"], 1, \"typography\", [\"<dot>\"], [\"<inch>\"]],\n\n    /* other */\n    \"<cell>\" : [[\"cells\",\"cell\"], 1, \"counting\", [\"<each>\"]],\n    \"<each>\" : [[\"each\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<count>\" : [[\"count\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<base-pair>\"  : [[\"bp\",\"base-pair\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<nucleotide>\" : [[\"nt\",\"nucleotide\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<molecule>\" : [[\"molecule\",\"molecules\"], 1.0, \"counting\", [\"<1>\"]],\n    \"<dozen>\" :  [[\"doz\",\"dz\",\"dozen\"],12.0,\"prefix_only\", [\"<each>\"]],\n    \"<percent>\": [[\"%\",\"percent\"], 0.01, \"prefix_only\", [\"<1>\"]],\n    \"<ppm>\" :  [[\"ppm\"],1e-6, \"prefix_only\", [\"<1>\"]],\n    \"<ppt>\" :  [[\"ppt\"],1e-9, \"prefix_only\", [\"<1>\"]],\n    \"<gross>\" :  [[\"gr\",\"gross\"],144.0, \"prefix_only\", [\"<dozen>\",\"<dozen>\"]],\n    \"<decibel>\"  : [[\"dB\",\"decibel\",\"decibels\"], 1.0, \"logarithmic\", [\"<decibel>\"]]\n  };\n\n  var BASE_UNITS = [\"<meter>\",\"<kilogram>\",\"<second>\",\"<mole>\", \"<ampere>\",\"<radian>\",\"<kelvin>\",\"<temp-K>\",\"<byte>\",\"<dollar>\",\"<candela>\",\"<each>\",\"<steradian>\",\"<decibel>\"];\n\n  var UNITY = \"<1>\";\n  var UNITY_ARRAY = [UNITY];\n\n  // Setup\n\n  /**\n   * Asserts unit definition is valid\n   *\n   * @param {string} unitDef - Name of unit to test\n   * @param {Object} definition - Definition of unit to test\n   *\n   * @returns {void}\n   * @throws {QtyError} if unit definition is not valid\n   */\n  function validateUnitDefinition(unitDef, definition) {\n    var scalar = definition[1];\n    var numerator = definition[3] || [];\n    var denominator = definition[4] || [];\n    if (!isNumber(scalar)) {\n      throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                         \"'scalar' must be a number\");\n    }\n\n    numerator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'numerator' is not recognized\");\n      }\n    });\n\n    denominator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'denominator' is not recognized\");\n      }\n    });\n  }\n\n  var PREFIX_VALUES = {};\n  var PREFIX_MAP = {};\n  var UNIT_VALUES = {};\n  var UNIT_MAP = {};\n  var OUTPUT_MAP = {};\n  for (var unitDef in UNITS) {\n    if (UNITS.hasOwnProperty(unitDef)) {\n      var definition = UNITS[unitDef];\n      if (definition[2] === \"prefix\") {\n        PREFIX_VALUES[unitDef] = definition[1];\n        for (var i = 0; i < definition[0].length; i++) {\n          PREFIX_MAP[definition[0][i]] = unitDef;\n        }\n      }\n      else {\n        validateUnitDefinition(unitDef, definition);\n        UNIT_VALUES[unitDef] = {\n          scalar: definition[1],\n          numerator: definition[3],\n          denominator: definition[4]\n        };\n        for (var j = 0; j < definition[0].length; j++) {\n          UNIT_MAP[definition[0][j]] = unitDef;\n        }\n      }\n      OUTPUT_MAP[unitDef] = definition[0][0];\n    }\n  }\n\n  /**\n   * Returns a list of available units of kind\n   *\n   * @param {string} [kind] - kind of units\n   * @returns {array} names of units\n   * @throws {QtyError} if kind is unknown\n   */\n  function getUnits(kind) {\n    var i;\n    var units = [];\n    var unitKeys = Object.keys(UNITS);\n    if (typeof kind === \"undefined\") {\n      for (i = 0; i < unitKeys.length; i++) {\n        if ([\"\", \"prefix\"].indexOf(UNITS[unitKeys[i]][2]) === -1) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n    else if (this.getKinds().indexOf(kind) === -1) {\n      throw new QtyError(\"Kind not recognized\");\n    }\n    else {\n      for (i = 0; i < unitKeys.length; i++) {\n        if (UNITS[unitKeys[i]][2] === kind) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n\n    return units.sort(function(a, b) {\n      if (a.toLowerCase() < b.toLowerCase()) {\n        return -1;\n      }\n      if (a.toLowerCase() > b.toLowerCase()) {\n        return 1;\n      }\n      return 0;\n    });\n  }\n\n  /**\n   * Returns a list of alternative names for a unit\n   *\n   * @param {string} unitName - name of unit\n   * @returns {string[]} aliases for unit\n   * @throws {QtyError} if unit is unknown\n   */\n  function getAliases(unitName) {\n    if (!UNIT_MAP[unitName]) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n    return UNITS[UNIT_MAP[unitName]][0];\n  }\n\n  var SIGNATURE_VECTOR = [\"length\", \"time\", \"temperature\", \"mass\", \"current\", \"substance\", \"luminosity\", \"currency\", \"information\", \"angle\"];\n\n  /*\n  calculates the unit signature id for use in comparing compatible units and simplification\n  the signature is based on a simple classification of units and is based on the following publication\n\n  Novak, G.S., Jr. \"Conversion of units of measurement\", IEEE Transactions on Software Engineering,\n  21(8), Aug 1995, pp.651-661\n  doi://10.1109/32.403789\n  http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel1/32/9079/00403789.pdf?isnumber=9079&prod=JNL&arnumber=403789&arSt=651&ared=661&arAuthor=Novak%2C+G.S.%2C+Jr.\n  */\n  function unitSignature() {\n    if (this.signature) {\n      return this.signature;\n    }\n    var vector = unitSignatureVector.call(this);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] *= Math.pow(20, i);\n    }\n\n    return vector.reduce(\n      function(previous, current) {\n        return previous + current;\n      },\n      0\n    );\n  }\n\n  // calculates the unit signature vector used by unit_signature\n  function unitSignatureVector() {\n    if (!this.isBase()) {\n      return unitSignatureVector.call(this.toBase());\n    }\n\n    var vector = new Array(SIGNATURE_VECTOR.length);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] = 0;\n    }\n    var r, n;\n    for (var j = 0; j < this.numerator.length; j++) {\n      if ((r = UNITS[this.numerator[j]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] + 1;\n        }\n      }\n    }\n\n    for (var k = 0; k < this.denominator.length; k++) {\n      if ((r = UNITS[this.denominator[k]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] - 1;\n        }\n      }\n    }\n    return vector;\n  }\n\n  var SIGN = \"[+-]\";\n  var INTEGER = \"\\\\d+\";\n  var SIGNED_INTEGER = SIGN + \"?\" + INTEGER;\n  var FRACTION = \"\\\\.\" + INTEGER;\n  var FLOAT = \"(?:\" + INTEGER + \"(?:\" + FRACTION + \")?\" + \")\" +\n              \"|\" +\n              \"(?:\" + FRACTION + \")\";\n  var EXPONENT = \"[Ee]\" + SIGNED_INTEGER;\n  var SCI_NUMBER = \"(?:\" + FLOAT + \")(?:\" + EXPONENT + \")?\";\n  var SIGNED_NUMBER = SIGN + \"?\\\\s*\" + SCI_NUMBER;\n  var QTY_STRING = \"(\" + SIGNED_NUMBER + \")?\" + \"\\\\s*([^/]*)(?:\\/(.+))?\";\n  var QTY_STRING_REGEX = new RegExp(\"^\" + QTY_STRING + \"$\");\n\n  var POWER_OP = \"\\\\^|\\\\*{2}\";\n  // Allow unit powers representing scalar, length, area, volume; 4 is for some\n  // special case representations in SI base units.\n  var SAFE_POWER = \"[01234]\";\n  var TOP_REGEX = new RegExp (\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(-?\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n  var BOTTOM_REGEX = new RegExp(\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n\n  /* parse a string into a unit object.\n   * Typical formats like :\n   * \"5.6 kg*m/s^2\"\n   * \"5.6 kg*m*s^-2\"\n   * \"5.6 kilogram*meter*second^-2\"\n   * \"2.2 kPa\"\n   * \"37 degC\"\n   * \"1\"  -- creates a unitless constant with value 1\n   * \"GPa\"  -- creates a unit with scalar 1 with units 'GPa'\n   * 6'4\"  -- recognized as 6 feet + 4 inches\n   * 8 lbs 8 oz -- recognized as 8 lbs + 8 ounces\n   */\n  function parse(val) {\n    if (!isString(val)) {\n      val = val.toString();\n    }\n    val = val.trim();\n\n    var result = QTY_STRING_REGEX.exec(val);\n    if (!result) {\n      throw new QtyError(val + \": Quantity not recognized\");\n    }\n\n    var scalarMatch = result[1];\n    if (scalarMatch) {\n      // Allow whitespaces between sign and scalar for loose parsing\n      scalarMatch = scalarMatch.replace(/\\s/g, \"\");\n      this.scalar = parseFloat(scalarMatch);\n    }\n    else {\n      this.scalar = 1;\n    }\n    var top = result[2];\n    var bottom = result[3];\n\n    var n, x, nx;\n    // TODO DRY me\n    while ((result = TOP_REGEX.exec(top))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var i = 0; i < Math.abs(n) ; i++) {\n        nx += x;\n      }\n      if (n >= 0) {\n        top = top.replace(result[0], nx);\n      }\n      else {\n        bottom = bottom ? bottom + nx : nx;\n        top = top.replace(result[0], \"\");\n      }\n    }\n\n    while ((result = BOTTOM_REGEX.exec(bottom))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var j = 0; j < n ; j++) {\n        nx += x;\n      }\n\n      bottom = bottom.replace(result[0], nx);\n    }\n\n    if (top) {\n      this.numerator = parseUnits(top.trim());\n    }\n    if (bottom) {\n      this.denominator = parseUnits(bottom.trim());\n    }\n  }\n\n  var PREFIX_REGEX = Object.keys(PREFIX_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  var UNIT_REGEX = Object.keys(UNIT_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  /*\n   * Minimal boundary regex to support units with Unicode characters\n   * \\b only works for ASCII\n   */\n  var BOUNDARY_REGEX = \"\\\\b|$\";\n  var UNIT_MATCH = \"(\" + PREFIX_REGEX + \")??(\" +\n                   UNIT_REGEX +\n                   \")(?:\" + BOUNDARY_REGEX + \")\";\n  var UNIT_TEST_REGEX = new RegExp(\"^\\\\s*(\" + UNIT_MATCH + \"[\\\\s\\\\*]*)+$\");\n  var UNIT_MATCH_REGEX = new RegExp(UNIT_MATCH, \"g\"); // g flag for multiple occurences\n  var parsedUnitsCache = {};\n  /**\n   * Parses and converts units string to normalized unit array.\n   * Result is cached to speed up next calls.\n   *\n   * @param {string} units Units string\n   * @returns {string[]} Array of normalized units\n   *\n   * @example\n   * // Returns [\"<second>\", \"<meter>\", \"<second>\"]\n   * parseUnits(\"s m s\");\n   *\n   */\n  function parseUnits(units) {\n    var cached = parsedUnitsCache[units];\n    if (cached) {\n      return cached;\n    }\n\n    var unitMatch, normalizedUnits = [];\n\n    // Scan\n    if (!UNIT_TEST_REGEX.test(units)) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n\n    while ((unitMatch = UNIT_MATCH_REGEX.exec(units))) {\n      normalizedUnits.push(unitMatch.slice(1));\n    }\n\n    normalizedUnits = normalizedUnits.map(function(item) {\n      return PREFIX_MAP[item[0]] ? [PREFIX_MAP[item[0]], UNIT_MAP[item[1]]] : [UNIT_MAP[item[1]]];\n    });\n\n    // Flatten and remove null elements\n    normalizedUnits = normalizedUnits.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    normalizedUnits = normalizedUnits.filter(function(item) {\n      return item;\n    });\n\n    parsedUnitsCache[units] = normalizedUnits;\n\n    return normalizedUnits;\n  }\n\n  /**\n   * Parses a string as a quantity\n   * @param {string} value - quantity as text\n   * @throws if value is not a string\n   * @returns {Qty|null} Parsed quantity or null if unrecognized\n   */\n  function globalParse(value) {\n    if (!isString(value)) {\n      throw new QtyError(\"Argument should be a string\");\n    }\n\n    try {\n      return this(value);\n    }\n    catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty instance\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a Qty instance, false otherwise\n   */\n  function isQty(value) {\n    return value instanceof Qty;\n  }\n\n  function Qty(initValue, initUnits) {\n    assertValidConstructorArgs.apply(null, arguments);\n\n    if (!(isQty(this))) {\n      return new Qty(initValue, initUnits);\n    }\n\n    this.scalar = null;\n    this.baseScalar = null;\n    this.signature = null;\n    this._conversionCache = {};\n    this.numerator = UNITY_ARRAY;\n    this.denominator = UNITY_ARRAY;\n\n    if (isDefinitionObject(initValue)) {\n      this.scalar = initValue.scalar;\n      this.numerator = (initValue.numerator && initValue.numerator.length !== 0) ? initValue.numerator : UNITY_ARRAY;\n      this.denominator = (initValue.denominator && initValue.denominator.length !== 0) ? initValue.denominator : UNITY_ARRAY;\n    }\n    else if (initUnits) {\n      parse.call(this, initUnits);\n      this.scalar = initValue;\n    }\n    else {\n      parse.call(this, initValue);\n    }\n\n    // math with temperatures is very limited\n    if (this.denominator.join(\"*\").indexOf(\"temp\") >= 0) {\n      throw new QtyError(\"Cannot divide with temperatures\");\n    }\n    if (this.numerator.join(\"*\").indexOf(\"temp\") >= 0) {\n      if (this.numerator.length > 1) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n      if (!compareArray(this.denominator, UNITY_ARRAY)) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n    }\n\n    this.initValue = initValue;\n    updateBaseScalar.call(this);\n\n    if (this.isTemperature() && this.baseScalar < 0) {\n      throw new QtyError(\"Temperatures must not be less than absolute zero\");\n    }\n  }\n\n  Qty.prototype = {\n    // Properly set up constructor\n    constructor: Qty,\n  };\n\n  /**\n   * Asserts constructor arguments are valid\n   *\n   * @param {*} value - Value to test\n   * @param {string} [units] - Optional units when value is passed as a number\n   *\n   * @returns {void}\n   * @throws {QtyError} if constructor arguments are invalid\n   */\n  function assertValidConstructorArgs(value, units) {\n    if (units) {\n      if (!(isNumber(value) && isString(units))) {\n        throw new QtyError(\"Only number accepted as initialization value \" +\n                           \"when units are explicitly provided\");\n      }\n    }\n    else {\n      if (!(isString(value) ||\n            isNumber(value) ||\n            isQty(value)    ||\n            isDefinitionObject(value))) {\n        throw new QtyError(\"Only string, number or quantity accepted as \" +\n                           \"single initialization value\");\n      }\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty definition object\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a definition object, false otherwise\n   */\n  function isDefinitionObject(value) {\n    return value && typeof value === \"object\" && value.hasOwnProperty(\"scalar\");\n  }\n\n  function updateBaseScalar() {\n    if (this.baseScalar) {\n      return this.baseScalar;\n    }\n    if (this.isBase()) {\n      this.baseScalar = this.scalar;\n      this.signature = unitSignature.call(this);\n    }\n    else {\n      var base = this.toBase();\n      this.baseScalar = base.scalar;\n      this.signature = base.signature;\n    }\n  }\n\n  var KINDS = {\n    \"-312078\": \"elastance\",\n    \"-312058\": \"resistance\",\n    \"-312038\": \"inductance\",\n    \"-152058\": \"potential\",\n    \"-152040\": \"magnetism\",\n    \"-152038\": \"magnetism\",\n    \"-7997\": \"specific_volume\",\n    \"-79\": \"snap\",\n    \"-59\": \"jolt\",\n    \"-39\": \"acceleration\",\n    \"-38\": \"radiation\",\n    \"-20\": \"frequency\",\n    \"-19\": \"speed\",\n    \"-18\": \"viscosity\",\n    \"-17\": \"volumetric_flow\",\n    \"-1\": \"wavenumber\",\n    \"0\": \"unitless\",\n    \"1\": \"length\",\n    \"2\": \"area\",\n    \"3\": \"volume\",\n    \"20\": \"time\",\n    \"400\": \"temperature\",\n    \"7941\": \"yank\",\n    \"7942\": \"power\",\n    \"7959\": \"pressure\",\n    \"7961\": \"force\",\n    \"7962\": \"energy\",\n    \"7979\": \"viscosity\",\n    \"7981\": \"momentum\",\n    \"7982\": \"angular_momentum\",\n    \"7997\": \"density\",\n    \"7998\": \"area_density\",\n    \"8000\": \"mass\",\n    \"152020\": \"radiation_exposure\",\n    \"159999\": \"magnetism\",\n    \"160000\": \"current\",\n    \"160020\": \"charge\",\n    \"312058\": \"conductance\",\n    \"312078\": \"capacitance\",\n    \"3199980\": \"activity\",\n    \"3199997\": \"molar_concentration\",\n    \"3200000\": \"substance\",\n    \"63999998\": \"illuminance\",\n    \"64000000\": \"luminous_power\",\n    \"1280000000\": \"currency\",\n    \"25599999980\": \"information_rate\",\n    \"25600000000\": \"information\",\n    \"511999999980\": \"angular_velocity\",\n    \"512000000000\": \"angle\"\n  };\n\n  /**\n   * Returns the list of available well-known kinds of units, e.g.\n   * \"radiation\" or \"length\".\n   *\n   * @returns {string[]} names of kinds of units\n   */\n  function getKinds() {\n    return uniq(Object.keys(KINDS).map(function(knownSignature) {\n      return KINDS[knownSignature];\n    }));\n  }\n\n  Qty.prototype.kind = function() {\n    return KINDS[this.signature.toString()];\n  };\n\n  assign(Qty.prototype, {\n    isDegrees: function() {\n      // signature may not have been calculated yet\n      return (this.signature === null || this.signature === 400) &&\n        this.numerator.length === 1 &&\n        compareArray(this.denominator, UNITY_ARRAY) &&\n        (this.numerator[0].match(/<temp-[CFRK]>/) || this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/));\n    },\n\n    isTemperature: function() {\n      return this.isDegrees() && this.numerator[0].match(/<temp-[CFRK]>/);\n    }\n  });\n\n  function subtractTemperatures(lhs,rhs) {\n    var lhsUnits = lhs.units();\n    var rhsConverted = rhs.to(lhsUnits);\n    var dstDegrees = Qty(getDegreeUnits(lhsUnits));\n    return Qty({\"scalar\": lhs.scalar - rhsConverted.scalar, \"numerator\": dstDegrees.numerator, \"denominator\": dstDegrees.denominator});\n  }\n\n  function subtractTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar - tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function addTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar + tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function getDegreeUnits(units) {\n    if (units === \"tempK\") {\n      return \"degK\";\n    }\n    else if (units === \"tempC\") {\n      return \"degC\";\n    }\n    else if (units === \"tempF\") {\n      return \"degF\";\n    }\n    else if (units === \"tempR\") {\n      return \"degR\";\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n  }\n\n  function toDegrees(src,dst) {\n    var srcDegK = toDegK(src);\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"degK\") {\n      dstScalar = srcDegK.scalar;\n    }\n    else if (dstUnits === \"degC\") {\n      dstScalar = srcDegK.scalar ;\n    }\n    else if (dstUnits === \"degF\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else if (dstUnits === \"degR\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for degree conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toDegK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempF\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<kelvin>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  function toTemp(src,dst) {\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"tempK\") {\n      dstScalar = src.baseScalar;\n    }\n    else if (dstUnits === \"tempC\") {\n      dstScalar = src.baseScalar - 273.15;\n    }\n    else if (dstUnits === \"tempF\") {\n      dstScalar = (src.baseScalar * 9 / 5) - 459.67;\n    }\n    else if (dstUnits === \"tempR\") {\n      dstScalar = src.baseScalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toTempK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar + 273.15;\n    }\n    else if (units === \"tempF\") {\n      q = (qty.scalar + 459.67) * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<temp-K>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  assign(Qty.prototype, {\n    /**\n     * Converts to other compatible units.\n     * Instance's converted quantities are cached for faster subsequent calls.\n     *\n     * @param {(string|Qty)} other - Target units as string or retrieved from\n     *                               other Qty instance (scalar is ignored)\n     *\n     * @returns {Qty} New converted Qty instance with target units\n     *\n     * @throws {QtyError} if target units are incompatible\n     *\n     * @example\n     * var weight = Qty(\"25 kg\");\n     * weight.to(\"lb\"); // => Qty(\"55.11556554621939 lbs\");\n     * weight.to(Qty(\"3 g\")); // => Qty(\"25000 g\"); // scalar of passed Qty is ignored\n     */\n    to: function(other) {\n      var cached, target;\n\n      if (other === undefined || other === null) {\n        return this;\n      }\n\n      if (!isString(other)) {\n        return this.to(other.units());\n      }\n\n      cached = this._conversionCache[other];\n      if (cached) {\n        return cached;\n      }\n\n      // Instantiating target to normalize units\n      target = Qty(other);\n      if (target.units() === this.units()) {\n        return this;\n      }\n\n      if (!this.isCompatible(target)) {\n        if (this.isInverse(target)) {\n          target = this.inverse().to(other);\n        }\n        else {\n          throwIncompatibleUnits(this.units(), target.units());\n        }\n      }\n      else {\n        if (target.isTemperature()) {\n          target = toTemp(this,target);\n        }\n        else if (target.isDegrees()) {\n          target = toDegrees(this,target);\n        }\n        else {\n          var q = divSafe(this.baseScalar, target.baseScalar);\n          target = Qty({\"scalar\": q, \"numerator\": target.numerator, \"denominator\": target.denominator});\n        }\n      }\n\n      this._conversionCache[other] = target;\n      return target;\n    },\n\n    // convert to base SI units\n    // results of the conversion are cached so subsequent calls to this will be fast\n    toBase: function() {\n      if (this.isBase()) {\n        return this;\n      }\n\n      if (this.isTemperature()) {\n        return toTempK(this);\n      }\n\n      var cached = baseUnitCache[this.units()];\n      if (!cached) {\n        cached = toBaseUnits(this.numerator,this.denominator);\n        baseUnitCache[this.units()] = cached;\n      }\n      return cached.mul(this.scalar);\n    },\n\n    // Converts the unit back to a float if it is unitless.  Otherwise raises an exception\n    toFloat: function() {\n      if (this.isUnitless()) {\n        return this.scalar;\n      }\n      throw new QtyError(\"Can't convert to Float unless unitless.  Use Unit#scalar\");\n    },\n\n    /**\n     * Returns the nearest multiple of quantity passed as\n     * precision\n     *\n     * @param {(Qty|string|number)} precQuantity - Quantity, string formated\n     *   quantity or number as expected precision\n     *\n     * @returns {Qty} Nearest multiple of precQuantity\n     *\n     * @example\n     * Qty('5.5 ft').toPrec('2 ft'); // returns 6 ft\n     * Qty('0.8 cu').toPrec('0.25 cu'); // returns 0.75 cu\n     * Qty('6.3782 m').toPrec('cm'); // returns 6.38 m\n     * Qty('1.146 MPa').toPrec('0.1 bar'); // returns 1.15 MPa\n     *\n     */\n    toPrec: function(precQuantity) {\n      if (isString(precQuantity)) {\n        precQuantity = Qty(precQuantity);\n      }\n      if (isNumber(precQuantity)) {\n        precQuantity = Qty(precQuantity + \" \" + this.units());\n      }\n\n      if (!this.isUnitless()) {\n        precQuantity = precQuantity.to(this.units());\n      }\n      else if (!precQuantity.isUnitless()) {\n        throwIncompatibleUnits(this.units(), precQuantity.units());\n      }\n\n      if (precQuantity.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      var precRoundedResult = mulSafe(\n        Math.round(this.scalar / precQuantity.scalar),\n        precQuantity.scalar\n      );\n\n      return Qty(precRoundedResult + this.units());\n    }\n  });\n\n  /**\n   * Configures and returns a fast function to convert\n   * Number values from units to others.\n   * Useful to efficiently convert large array of values\n   * with same units into others with iterative methods.\n   * Does not take care of rounding issues.\n   *\n   * @param {string} srcUnits Units of values to convert\n   * @param {string} dstUnits Units to convert to\n   *\n   * @returns {Function} Converting function accepting Number value\n   *   and returning converted value\n   *\n   * @throws \"Incompatible units\" if units are incompatible\n   *\n   * @example\n   * // Converting large array of numbers with the same units\n   * // into other units\n   * var converter = Qty.swiftConverter(\"m/h\", \"ft/s\");\n   * var convertedSerie = largeSerie.map(converter);\n   *\n   */\n  function swiftConverter(srcUnits, dstUnits) {\n    var srcQty = Qty(srcUnits);\n    var dstQty = Qty(dstUnits);\n\n    if (srcQty.eq(dstQty)) {\n      return identity;\n    }\n\n    var convert;\n    if (!srcQty.isTemperature()) {\n      convert = function(value) {\n        return value * srcQty.baseScalar / dstQty.baseScalar;\n      };\n    }\n    else {\n      convert = function(value) {\n        // TODO Not optimized\n        return srcQty.mul(value).to(dstQty).scalar;\n      };\n    }\n\n    return function converter(value) {\n      var i, length, result;\n      if (!Array.isArray(value)) {\n        return convert(value);\n      }\n      else {\n        length = value.length;\n        result = [];\n        for (i = 0; i < length; i++) {\n          result.push(convert(value[i]));\n        }\n        return result;\n      }\n    };\n  }\n\n  var baseUnitCache = {};\n\n  function toBaseUnits(numerator,denominator) {\n    var num = [];\n    var den = [];\n    var q = 1;\n    var unit;\n    for (var i = 0; i < numerator.length; i++) {\n      unit = numerator[i];\n      if (PREFIX_VALUES[unit]) {\n        // workaround to fix\n        // 0.1 * 0.1 => 0.010000000000000002\n        q = mulSafe(q, PREFIX_VALUES[unit]);\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q *= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            num.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            den.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n    for (var j = 0; j < denominator.length; j++) {\n      unit = denominator[j];\n      if (PREFIX_VALUES[unit]) {\n        q /= PREFIX_VALUES[unit];\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q /= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            den.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            num.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return Qty({\"scalar\": q, \"numerator\": num, \"denominator\": den});\n  }\n\n  Qty.parse = globalParse;\n\n  Qty.getUnits = getUnits;\n  Qty.getAliases = getAliases;\n\n  Qty.mulSafe = mulSafe;\n  Qty.divSafe = divSafe;\n\n  Qty.getKinds = getKinds;\n\n  Qty.swiftConverter = swiftConverter;\n\n  Qty.Error = QtyError;\n\n  assign(Qty.prototype, {\n    // Returns new instance with units of this\n    add: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        throw new QtyError(\"Cannot add two temperatures\");\n      }\n      else if (this.isTemperature()) {\n        return addTempDegrees(this, other);\n      }\n      else if (other.isTemperature()) {\n        return addTempDegrees(other, this);\n      }\n\n      return Qty({\"scalar\": this.scalar + other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    sub: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        return subtractTemperatures(this,other);\n      }\n      else if (this.isTemperature()) {\n        return subtractTempDegrees(this,other);\n      }\n      else if (other.isTemperature()) {\n        throw new QtyError(\"Cannot subtract a temperature from a differential degree unit\");\n      }\n\n      return Qty({\"scalar\": this.scalar - other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    mul: function(other) {\n      if (isNumber(other)) {\n        return Qty({\"scalar\": mulSafe(this.scalar, other), \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if ((this.isTemperature() || other.isTemperature()) && !(this.isUnitless() || other.isUnitless())) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.numerator, op2.denominator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, op2.scalar, numdenscale[2]), \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    div: function(other) {\n      if (isNumber(other)) {\n        if (other === 0) {\n          throw new QtyError(\"Divide by zero\");\n        }\n        return Qty({\"scalar\": this.scalar / other, \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (other.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      if (other.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      else if (this.isTemperature() && !other.isUnitless()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.denominator, op2.numerator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, numdenscale[2]) / op2.scalar, \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    // Returns a Qty that is the inverse of this Qty,\n    inverse: function() {\n      if (this.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      if (this.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n      return Qty({\"scalar\": 1 / this.scalar, \"numerator\": this.denominator, \"denominator\": this.numerator});\n    }\n  });\n\n  function cleanTerms(num1, den1, num2, den2) {\n    function notUnity(val) {\n      return val !== UNITY;\n    }\n\n    num1 = num1.filter(notUnity);\n    num2 = num2.filter(notUnity);\n    den1 = den1.filter(notUnity);\n    den2 = den2.filter(notUnity);\n\n    var combined = {};\n\n    function combineTerms(terms, direction) {\n      var k;\n      var prefix;\n      var prefixValue;\n      for (var i = 0; i < terms.length; i++) {\n        if (PREFIX_VALUES[terms[i]]) {\n          k = terms[i + 1];\n          prefix = terms[i];\n          prefixValue = PREFIX_VALUES[prefix];\n          i++;\n        }\n        else {\n          k = terms[i];\n          prefix = null;\n          prefixValue = 1;\n        }\n        if (k && k !== UNITY) {\n          if (combined[k]) {\n            combined[k][0] += direction;\n            var combinedPrefixValue = combined[k][2] ? PREFIX_VALUES[combined[k][2]] : 1;\n            combined[k][direction === 1 ? 3 : 4] *= divSafe(prefixValue, combinedPrefixValue);\n          }\n          else {\n            combined[k] = [direction, k, prefix, 1, 1];\n          }\n        }\n      }\n    }\n\n    combineTerms(num1, 1);\n    combineTerms(den1, -1);\n    combineTerms(num2, 1);\n    combineTerms(den2, -1);\n\n    var num = [];\n    var den = [];\n    var scale = 1;\n\n    for (var prop in combined) {\n      if (combined.hasOwnProperty(prop)) {\n        var item = combined[prop];\n        var n;\n        if (item[0] > 0) {\n          for (n = 0; n < item[0]; n++) {\n            num.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        else if (item[0] < 0) {\n          for (n = 0; n < -item[0]; n++) {\n            den.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        scale *= divSafe(item[3], item[4]);\n      }\n    }\n\n    if (num.length === 0) {\n      num = UNITY_ARRAY;\n    }\n    if (den.length === 0) {\n      den = UNITY_ARRAY;\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return [num, den, scale];\n  }\n\n  assign(Qty.prototype, {\n    eq: function(other) {\n      return this.compareTo(other) === 0;\n    },\n\n    lt: function(other) {\n      return this.compareTo(other) === -1;\n    },\n\n    lte: function(other) {\n      return this.eq(other) || this.lt(other);\n    },\n\n    gt: function(other) {\n      return this.compareTo(other) === 1;\n    },\n\n    gte: function(other) {\n      return this.eq(other) || this.gt(other);\n    },\n\n    // Compare two Qty objects. Throws an exception if they are not of compatible types.\n    // Comparisons are done based on the value of the quantity in base SI units.\n    //\n    // NOTE: We cannot compare inverses as that breaks the general compareTo contract:\n    //   if a.compareTo(b) < 0 then b.compareTo(a) > 0\n    //   if a.compareTo(b) == 0 then b.compareTo(a) == 0\n    //\n    //   Since \"10S\" == \".1ohm\" (10 > .1) and \"10ohm\" == \".1S\" (10 > .1)\n    //     Qty(\"10S\").inverse().compareTo(\"10ohm\") == -1\n    //     Qty(\"10ohm\").inverse().compareTo(\"10S\") == -1\n    //\n    //   If including inverses in the sort is needed, I suggest writing: Qty.sort(qtyArray,units)\n    compareTo: function(other) {\n      if (isString(other)) {\n        return this.compareTo(Qty(other));\n      }\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n      if (this.baseScalar < other.baseScalar) {\n        return -1;\n      }\n      else if (this.baseScalar === other.baseScalar) {\n        return 0;\n      }\n      else if (this.baseScalar > other.baseScalar) {\n        return 1;\n      }\n    },\n\n    // Return true if quantities and units match\n    // Unit(\"100 cm\").same(Unit(\"100 cm\"))  # => true\n    // Unit(\"100 cm\").same(Unit(\"1 m\"))     # => false\n    same: function(other) {\n      return (this.scalar === other.scalar) && (this.units() === other.units());\n    }\n  });\n\n  assign(Qty.prototype, {\n    // returns true if no associated units\n    // false, even if the units are \"unitless\" like 'radians, each, etc'\n    isUnitless: function() {\n      return [this.numerator, this.denominator].every(function(item) {\n        return compareArray(item, UNITY_ARRAY);\n      });\n    },\n\n    /*\n    check to see if units are compatible, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isCompatible: function(other) {\n      if (isString(other)) {\n        return this.isCompatible(Qty(other));\n      }\n\n      if (!(isQty(other))) {\n        return false;\n      }\n\n      if (other.signature !== undefined) {\n        return this.signature === other.signature;\n      }\n      else {\n        return false;\n      }\n    },\n\n    /*\n    check to see if units are inverse of each other, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isInverse: function(other) {\n      return this.inverse().isCompatible(other);\n    },\n\n    // Returns 'true' if the Unit is represented in base units\n    isBase: function() {\n      if (this._isBase !== undefined) {\n        return this._isBase;\n      }\n      if (this.isDegrees() && this.numerator[0].match(/<(kelvin|temp-K)>/)) {\n        this._isBase = true;\n        return this._isBase;\n      }\n\n      this.numerator.concat(this.denominator).forEach(function(item) {\n        if (item !== UNITY && BASE_UNITS.indexOf(item) === -1 ) {\n          this._isBase = false;\n        }\n      }, this);\n      if (this._isBase === false) {\n        return this._isBase;\n      }\n      this._isBase = true;\n      return this._isBase;\n    }\n  });\n\n  function NestedMap() {}\n\n  NestedMap.prototype.get = function(keys) {\n\n    // Allows to pass key1, key2, ... instead of [key1, key2, ...]\n    if (arguments.length > 1) {\n      // Slower with Firefox but faster with Chrome than\n      // Array.prototype.slice.call(arguments)\n      // See http://jsperf.com/array-apply-versus-array-prototype-slice-call\n      keys = Array.apply(null, arguments);\n    }\n\n    return keys.reduce(function(map, key, index) {\n      if (map) {\n\n        var childMap = map[key];\n\n        if (index === keys.length - 1) {\n          return childMap ? childMap.data : undefined;\n        }\n        else {\n          return childMap;\n        }\n      }\n    },\n    this);\n  };\n\n  NestedMap.prototype.set = function(keys, value) {\n\n    if (arguments.length > 2) {\n      keys = Array.prototype.slice.call(arguments, 0, -1);\n      value = arguments[arguments.length - 1];\n    }\n\n    return keys.reduce(function(map, key, index) {\n\n      var childMap = map[key];\n      if (childMap === undefined) {\n        childMap = map[key] = {};\n      }\n\n      if (index === keys.length - 1) {\n        childMap.data = value;\n        return value;\n      }\n      else {\n        return childMap;\n      }\n    }, this);\n  };\n\n  /**\n   * Default formatter\n   *\n   * @param {number} scalar - scalar value\n   * @param {string} units - units as string\n   *\n   * @returns {string} formatted result\n   */\n  function defaultFormatter(scalar, units) {\n    return (scalar + \" \" + units).trim();\n  }\n\n  /**\n   *\n   * Configurable Qty default formatter\n   *\n   * @type {function}\n   *\n   * @param {number} scalar\n   * @param {string} units\n   *\n   * @returns {string} formatted result\n   */\n  Qty.formatter = defaultFormatter;\n\n  assign(Qty.prototype, {\n\n    // returns the 'unit' part of the Unit object without the scalar\n    units: function() {\n      if (this._units !== undefined) {\n        return this._units;\n      }\n\n      var numIsUnity = compareArray(this.numerator, UNITY_ARRAY);\n      var denIsUnity = compareArray(this.denominator, UNITY_ARRAY);\n      if (numIsUnity && denIsUnity) {\n        this._units = \"\";\n        return this._units;\n      }\n\n      var numUnits = stringifyUnits(this.numerator);\n      var denUnits = stringifyUnits(this.denominator);\n      this._units = numUnits + (denIsUnity ? \"\" : (\"/\" + denUnits));\n      return this._units;\n    },\n\n    /**\n     * Stringifies the quantity\n     * Deprecation notice: only units parameter is supported.\n     *\n     * @param {(number|string|Qty)} targetUnitsOrMaxDecimalsOrPrec -\n     *                              target units if string,\n     *                              max number of decimals if number,\n     *                              passed to #toPrec before converting if Qty\n     *\n     * @param {number=} maxDecimals - Maximum number of decimals of\n     *                                formatted output\n     *\n     * @returns {string} reparseable quantity as string\n     */\n    toString: function(targetUnitsOrMaxDecimalsOrPrec, maxDecimals) {\n      var targetUnits;\n      if (isNumber(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = this.units();\n        maxDecimals = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isString(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isQty(targetUnitsOrMaxDecimalsOrPrec)) {\n        return this.toPrec(targetUnitsOrMaxDecimalsOrPrec).toString(maxDecimals);\n      }\n\n      var out = this.to(targetUnits);\n\n      var outScalar = maxDecimals !== undefined ? round(out.scalar, maxDecimals) : out.scalar;\n      out = (outScalar + \" \" + out.units()).trim();\n      return out;\n    },\n\n    /**\n     * Format the quantity according to optional passed target units\n     * and formatter\n     *\n     * @param {string} [targetUnits=current units] -\n     *                 optional units to convert to before formatting\n     *\n     * @param {function} [formatter=Qty.formatter] -\n     *                   delegates formatting to formatter callback.\n     *                   formatter is called back with two parameters (scalar, units)\n     *                   and should return formatted result.\n     *                   If unspecified, formatting is delegated to default formatter\n     *                   set to Qty.formatter\n     *\n     * @example\n     * var roundingAndLocalizingFormatter = function(scalar, units) {\n     *   // localize or limit scalar to n max decimals for instance\n     *   // return formatted result\n     * };\n     * var qty = Qty('1.1234 m');\n     * qty.format(); // same units, default formatter => \"1.234 m\"\n     * qty.format(\"cm\"); // converted to \"cm\", default formatter => \"123.45 cm\"\n     * qty.format(roundingAndLocalizingFormatter); // same units, custom formatter => \"1,2 m\"\n     * qty.format(\"cm\", roundingAndLocalizingFormatter); // convert to \"cm\", custom formatter => \"123,4 cm\"\n     *\n     * @returns {string} quantity as string\n     */\n    format: function(targetUnits, formatter) {\n      if (arguments.length === 1) {\n        if (typeof targetUnits === \"function\") {\n          formatter = targetUnits;\n          targetUnits = undefined;\n        }\n      }\n\n      formatter = formatter || Qty.formatter;\n      var targetQty = this.to(targetUnits);\n      return formatter.call(this, targetQty.scalar, targetQty.units());\n    }\n  });\n\n  var stringifiedUnitsCache = new NestedMap();\n  /**\n   * Returns a string representing a normalized unit array\n   *\n   * @param {string[]} units Normalized unit array\n   * @returns {string} String representing passed normalized unit array and\n   *   suitable for output\n   *\n   */\n  function stringifyUnits(units) {\n\n    var stringified = stringifiedUnitsCache.get(units);\n    if (stringified) {\n      return stringified;\n    }\n\n    var isUnity = compareArray(units, UNITY_ARRAY);\n    if (isUnity) {\n      stringified = \"1\";\n    }\n    else {\n      stringified = simplify(getOutputNames(units)).join(\"*\");\n    }\n\n    // Cache result\n    stringifiedUnitsCache.set(units, stringified);\n\n    return stringified;\n  }\n\n  function getOutputNames(units) {\n    var unitNames = [], token, tokenNext;\n    for (var i = 0; i < units.length; i++) {\n      token = units[i];\n      tokenNext = units[i + 1];\n      if (PREFIX_VALUES[token]) {\n        unitNames.push(OUTPUT_MAP[token] + OUTPUT_MAP[tokenNext]);\n        i++;\n      }\n      else {\n        unitNames.push(OUTPUT_MAP[token]);\n      }\n    }\n    return unitNames;\n  }\n\n  function simplify(units) {\n    // this turns ['s','m','s'] into ['s2','m']\n\n    var unitCounts = units.reduce(function(acc, unit) {\n      var unitCounter = acc[unit];\n      if (!unitCounter) {\n        acc.push(unitCounter = acc[unit] = [unit, 0]);\n      }\n\n      unitCounter[1]++;\n\n      return acc;\n    }, []);\n\n    return unitCounts.map(function(unitCount) {\n      return unitCount[0] + (unitCount[1] > 1 ? unitCount[1] : \"\");\n    });\n  }\n\n  Qty.version = \"1.7.6\";\n\n  return Qty;\n\n})));\n","import Qty from 'js-quantities';\nexport function convertUnit(array, fromUnit, toUnit) {\n    fromUnit = normalize(fromUnit);\n    toUnit = normalize(toUnit);\n    if (fromUnit === toUnit)\n        return array;\n    const convert = Qty.swiftConverter(fromUnit, toUnit); // Configures converter\n    //@ts-expect-error convert does not allowed typed array but it works\n    return convert(array);\n}\nfunction normalize(unit) {\n    unit = unit.replace(/°C/g, 'tempC');\n    unit = unit.replace(/°F/g, 'tempF');\n    unit = unit.replace(/(^|\\W)K(\\W|$)/g, '$1tempK$2');\n    return unit;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9jb252ZXJ0VW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFjaEMsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBUSxFQUNSLFFBQWdCLEVBQ2hCLE1BQWM7SUFFZCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0IsSUFBSSxRQUFRLEtBQUssTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXRDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsdUJBQXVCO0lBQzdFLG9FQUFvRTtJQUNwRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBWTtJQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9","const testRegExp = /^\\/((?:\\\\\\/|[^/])+)\\/([migyu]{0,5})?$/;\nexport function ensureRegexp(string) {\n    if (typeof string !== 'string')\n        return string;\n    const parts = testRegExp.exec(string);\n    if (parts) {\n        try {\n            return new RegExp(parts[1], parts[2]);\n        }\n        catch (err) {\n            return stringToRegexp(string);\n        }\n    }\n    else {\n        return stringToRegexp(string);\n    }\n}\nfunction stringToRegexp(string, flags = 'i') {\n    return new RegExp(string.replace(/[[\\]\\\\{}()+*?.$^|]/g, (match) => `\\\\${match}`), flags);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlUmVnZXhwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZW5zdXJlUmVnZXhwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxHQUFHLHVDQUF1QyxDQUFDO0FBRTNELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBdUI7SUFDbEQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxJQUFJLEtBQUssRUFBRTtRQUNULElBQUk7WUFDRixPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7S0FDRjtTQUFNO1FBQ0wsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsTUFBYyxFQUFFLEtBQUssR0FBRyxHQUFHO0lBQ2pELE9BQU8sSUFBSSxNQUFNLENBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxFQUN0RSxLQUFLLENBQ04sQ0FBQztBQUNKLENBQUMifQ==","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\nimport { convertUnit } from './convertUnit';\nexport function getConvertedVariable(variable, newUnits) {\n    const data = variable.units !== undefined && variable.units !== newUnits // would be nice if convertUnit would allow typedArray\n        ? convertUnit(Array.from(variable.data), variable.units, newUnits)\n        : variable.data;\n    return {\n        units: newUnits,\n        label: variable.label.replace(`[${variable.units || ''}]`, `[${newUnits}]`),\n        data: data || [],\n        min: data ? min(data) : undefined,\n        max: data ? max(data) : undefined,\n        isMonotone: xIsMonotone(data),\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29udmVydGVkVmFyaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9nZXRDb252ZXJ0ZWRWYXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsUUFBMEIsRUFDMUIsUUFBZ0I7SUFFaEIsTUFBTSxJQUFJLEdBQ1IsUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsc0RBQXNEO1FBQ2hILENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7UUFDbEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEIsT0FBTztRQUNMLEtBQUssRUFBRSxRQUFRO1FBQ2YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLFFBQVEsR0FBRyxDQUFDO1FBQzNFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2pDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDO0tBQzlCLENBQUM7QUFDSixDQUFDIn0=","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { convertUnit } from './convertUnit';\nimport { ensureRegexp } from './ensureRegexp';\nimport { getConvertedVariable } from './getConvertedVariable';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n */\nexport function getXYSpectrum(spectra = [], selector = {}) {\n    if (spectra.length < 1)\n        return;\n    let { dataType, title, xUnits, yUnits, variables, xVariable = 'x', yVariable = 'y', units, labels, xLabel, yLabel, meta, index, } = selector;\n    if (index !== undefined) {\n        return spectra[index];\n    }\n    if (dataType) {\n        dataType = ensureRegexp(dataType);\n    }\n    if (title) {\n        title = ensureRegexp(title);\n    }\n    if (units && !xUnits && !yUnits)\n        [yUnits, xUnits] = units.split(/\\s*vs\\s*/);\n    if (labels && !xLabel && !yLabel) {\n        [yLabel, xLabel] = labels.split(/\\s*vs\\s*/);\n    }\n    if (variables) {\n        const parts = variables.split(/\\s*vs\\s*/);\n        if (parts.length === 2) {\n            xVariable = parts[1];\n            yVariable = parts[0];\n        }\n    }\n    if (xLabel)\n        xLabel = ensureRegexp(xLabel);\n    if (yLabel)\n        yLabel = ensureRegexp(yLabel);\n    for (let spectrum of spectra) {\n        let variableNames = Object.keys(spectrum.variables);\n        if (!(variableNames.length > 1))\n            continue;\n        // we filter on general spectrum information\n        if (dataType) {\n            if (!spectrum.dataType || !dataType.exec(spectrum.dataType)) {\n                continue;\n            }\n        }\n        if (title) {\n            if (!spectrum.title || !title.exec(spectrum.title)) {\n                continue;\n            }\n        }\n        if (meta && typeof meta === 'object') {\n            if (!spectrum.meta)\n                continue;\n            for (let key in spectrum.meta) {\n                if (!spectrum.meta[key])\n                    continue;\n                let value = ensureRegexp(spectrum.meta[key]);\n                if (!value.exec(spectrum.meta[key]))\n                    continue;\n            }\n        }\n        let x = getPossibleVariable(spectrum.variables, {\n            units: xUnits,\n            label: xLabel,\n            variableName: xVariable,\n        });\n        let y = getPossibleVariable(spectrum.variables, {\n            units: yUnits,\n            label: yLabel,\n            variableName: yVariable,\n        });\n        if (x && y) {\n            return {\n                title: spectrum.title,\n                dataType: spectrum.dataType,\n                meta: spectrum.meta,\n                variables: { x, y },\n            };\n        }\n    }\n    return;\n}\nfunction getPossibleVariable(variables, selector = {}) {\n    var _a, _b;\n    const { units, label, variableName } = selector;\n    let possible = { ...variables };\n    let key;\n    if (units !== undefined) {\n        for (key in possible) {\n            const variable = variables[key];\n            let convertibleUnits = true;\n            try {\n                convertUnit(1, (variable === null || variable === void 0 ? void 0 : variable.units) || '', units);\n            }\n            catch (e) {\n                convertibleUnits = false;\n            }\n            if (convertibleUnits && variable) {\n                possible[key] = getConvertedVariable(variable, units);\n            }\n            else {\n                delete possible[key];\n            }\n        }\n    }\n    if (label !== undefined) {\n        const regexpLabel = ensureRegexp(label);\n        for (key in possible) {\n            if (!regexpLabel.exec((_b = (_a = variables[key]) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : '')) {\n                delete possible[key];\n            }\n        }\n    }\n    if (variableName !== undefined) {\n        if (possible[variableName])\n            return possible[variableName];\n        const upper = variableName.toUpperCase();\n        if (Object.prototype.hasOwnProperty.call(possible, upper)) {\n            return possible[upper];\n        }\n        const lower = variableName.toLowerCase();\n        if (Object.prototype.hasOwnProperty.call(possible, lower)) {\n            return possible[lower];\n        }\n    }\n    const possibleFiltered = Object.values(possible).filter((val) => val !== undefined);\n    if (possibleFiltered.length > 0) {\n        return possibleFiltered[0];\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0WFlTcGVjdHJ1bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2dldFhZU3BlY3RydW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBU3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixVQUEyQixFQUFFLEVBQzdCLFdBQTZCLEVBQUU7SUFFL0IsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7UUFBRSxPQUFPO0lBRS9CLElBQUksRUFDRixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FBRyxHQUFHLEVBQ2YsU0FBUyxHQUFHLEdBQUcsRUFDZixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLEtBQUssR0FDTixHQUFHLFFBQVEsQ0FBQztJQUViLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN2QjtJQUVELElBQUksUUFBUSxFQUFFO1FBQ1osUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNuQztJQUVELElBQUksS0FBSyxFQUFFO1FBQ1QsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM3QjtJQUVELElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTTtRQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUUsSUFBSSxNQUFNLElBQUks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","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\nimport { getNormalizedSpectrum } from './util/getNormalizedSpectrum';\nimport { getXYSpectrum } from './util/getXYSpectrum';\n/**\n * Class allowing to store and manipulate an analysis.\n * An analysis may contain one or more spectra that can be selected\n * based on their units\n */\nexport class Analysis {\n    constructor(options = {}) {\n        this.id = options.id || Math.random().toString(36).substring(2, 10);\n        this.label = options.label || this.id;\n        this.spectrumCallback = options.spectrumCallback;\n        this.spectra = [];\n        this.cache = {};\n    }\n    /**\n     * Add a spectrum in the internal spectra variable\n     */\n    pushSpectrum(variables, options = {}) {\n        this.spectra.push(standardizeData(variables, options, {\n            spectrumCallback: this.spectrumCallback,\n        }));\n        this.cache = {};\n    }\n    /**\n     * Retrieve a Spectrum based on x/y units\n     */\n    getXYSpectrum(selector = {}) {\n        let id = JSON.stringify(selector);\n        if (!this.cache[id]) {\n            this.cache[id] = getXYSpectrum(this.spectra, selector);\n        }\n        return this.cache[id];\n    }\n    /**\n     * Retrieve a xy object\n     * @param selector.units Units separated by vs like for example \"g vs °C\"\n     * @param selector.xUnits if undefined takes the first variable\n     * @param selector.yUnits if undefined takes the second variable\n     */\n    getXY(selector = {}) {\n        let spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return {\n            x: spectrum.variables.x.data,\n            y: spectrum.variables.y.data,\n        };\n    }\n    /**\n     * Return the data object for specific x/y units with possibly some\n     * normalization options\n     * @param options.selector.xUnits // if undefined takes the first variable\n     * @param options.selector.yUnits // if undefined takes the second variable\n     */\n    getNormalizedSpectrum(options = {}) {\n        const { normalization, selector } = options;\n        const spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return getNormalizedSpectrum(spectrum, normalization);\n    }\n    /**\n     * Returns the first spectrum. This method could be improved in the future\n     * @returns\n     */\n    getSpectrum() {\n        return this.spectra[0];\n    }\n    /**\n     * Returns the xLabel\n     * @param selector.xUnits // if undefined takes the first variable\n     * @param selector.yUnits // if undefined takes the second variable\n     */\n    getXLabel(selector) {\n        var _a;\n        return (_a = this.getXYSpectrum(selector)) === null || _a === void 0 ? void 0 : _a.variables.x.label;\n    }\n    /**\n     * Returns the yLabel\n     * @param selector.xUnits // if undefined takes the first variable\n     * @param selector.yUnits // if undefined takes the second variable\n     */\n    getYLabel(selector) {\n        var _a;\n        return (_a = this.getXYSpectrum(selector)) === null || _a === void 0 ? void 0 : _a.variables.y.label;\n    }\n}\n/**\n * Internal function that ensure the order of x / y array\n */\nfunction standardizeData(variables, options, analysisOptions) {\n    let { meta = {}, dataType = '', title = '' } = options;\n    const { spectrumCallback } = analysisOptions;\n    if (spectrumCallback) {\n        spectrumCallback(variables);\n    }\n    let xVariable = variables.x;\n    let yVariable = variables.y;\n    if (!xVariable || !yVariable) {\n        throw Error('A spectrum must contain at least x and y variables');\n    }\n    if (!isAnyArray(xVariable.data) || !isAnyArray(yVariable.data)) {\n        throw Error('x and y variables must contain an array data');\n    }\n    let x = xVariable.data;\n    let reverse = x && x.length > 1 && x[0] > x[x.length - 1];\n    for (let [key, variable] of Object.entries(variables)) {\n        if (reverse)\n            variable.data = variable.data.slice().reverse();\n        variable.label = variable.label || key;\n        if (variable.label.match(/^.*[([](?<units>.*)[)\\]].*$/)) {\n            const units = variable.label.replace(/^.*[([](?<units>.*)[)\\]].*$/, '$<units>');\n            if (!variable.units || variable.units === units) {\n                variable.units = units;\n                variable.label = variable.label.replace(/[([].*[)\\]]/, '').trim();\n            }\n        }\n        variable.min = min(variable.data);\n        variable.max = max(variable.data);\n        variable.isMonotone = xIsMonotone(variable.data);\n    }\n    return {\n        variables,\n        title,\n        dataType,\n        meta,\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5hbHlzaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQW5hbHlzaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFjckQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBT25CLFlBQW1CLFVBQTJCLEVBQUU7UUFDOUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FDakIsU0FBNEIsRUFDNUIsVUFBdUMsRUFBRTtRQUV6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDZixlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRTtZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYSxDQUFDLFdBQTZCLEVBQUU7UUFDbEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxXQUE2QixFQUFFO1FBQzFDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDNUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHFCQUFxQixDQUFDLFVBQTZCLEVBQUU7UUFDMUQsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2hDLE9BQU8scUJBQXFCLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxRQUEwQjs7UUFDekMsT0FBTyxNQUFBLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLDBDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLFFBQTBCOztRQUN6QyxPQUFPLE1BQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsMENBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWUsQ0FDdEIsU0FBNEIsRUFDNUIsT0FBb0MsRUFDcEMsZUFBMEQ7SUFFMUQsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3ZELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztJQUU3QyxJQUFJLGdCQUFnQixFQUFFO1FBQ3BCLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzdCO0lBRUQsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDNUIsTUFBTSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztLQUNuRTtJQUNELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM5RCxNQUFNLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0tBQzdEO0lBRUQsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztJQUN2QixJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTFELEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ3JELElBQUksT0FBTztZQUFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3RCxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDO1FBQ3ZDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsRUFBRTtZQUN2RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbEMsNkJBQTZCLEVBQzdCLFVBQVUsQ0FDWCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQy9DLFFBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNuRTtTQUNGO1FBQ0QsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEQ7SUFFRCxPQUFPO1FBQ0wsU0FBUztRQUNULEtBQUs7UUFDTCxRQUFRO1FBQ1IsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDIn0=","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/**\n * Dynamically type a string\n * @param {string} value String to dynamically type\n * @returns {boolean|string|number}\n */\nexport function parseString(value) {\n  if (value.length === 4 || value.length === 5) {\n    let lowercase = value.toLowerCase();\n\n    if (lowercase === 'true') return true;\n    if (lowercase === 'false') return false;\n  }\n  let number = Number(value);\n  if (number === 0 && !value.includes('0')) {\n    return value;\n  }\n  if (!Number.isNaN(number)) return number;\n  return value;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\nexport function complexChromatogram(result) {\n    let spectra = result.spectra;\n    let length = spectra.length;\n    let chromatogram = {\n        times: new Array(length),\n        series: {\n            ms: {\n                dimension: 2,\n                data: new Array(length),\n            },\n        },\n    };\n    let existingGCMSFields = [];\n    for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n        let label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n        if (spectra[0][label]) {\n            existingGCMSFields.push(label);\n            chromatogram.series[label] = {\n                dimension: 1,\n                data: new Array(length),\n            };\n        }\n    }\n    for (let i = 0; i < length; i++) {\n        let spectrum = spectra[i];\n        chromatogram.times[i] = spectrum.pageValue;\n        for (let j = 0; j < existingGCMSFields.length; j++) {\n            chromatogram.series[existingGCMSFields[j]].data[i] = Number(spectrum[existingGCMSFields[j]]);\n        }\n        if (spectrum.data) {\n            chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n        }\n    }\n    result.chromatogram = chromatogram;\n}\nexport function isMSField(canonicDataLabel) {\n    return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\nexport function convertMSFieldToLabel(value) {\n    return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n//# sourceMappingURL=complexChromatogram.js.map","export default function convertToFloatArray(stringArray) {\n    let floatArray = [];\n    for (let i = 0; i < stringArray.length; i++) {\n        floatArray.push(Number(stringArray[i]));\n    }\n    return floatArray;\n}\n//# sourceMappingURL=convertToFloatArray.js.map","export default function fastParseXYData(spectrum, value) {\n    // TODO need to deal with result\n    //  console.log(value);\n    // we check if deltaX is defined otherwise we calculate it\n    let yFactor = spectrum.yFactor;\n    let deltaX = spectrum.deltaX;\n    spectrum.isXYdata = true;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let currentX = spectrum.firstX;\n    let currentY = spectrum.firstY;\n    // we skip the first line\n    //\n    let endLine = false;\n    let ascii;\n    let i = 0;\n    for (; i < value.length; i++) {\n        ascii = value.charCodeAt(i);\n        if (ascii === 13 || ascii === 10) {\n            endLine = true;\n        }\n        else {\n            if (endLine)\n                break;\n        }\n    }\n    // we proceed taking the i after the first line\n    let newLine = true;\n    let isDifference = false;\n    let isLastDifference = false;\n    let lastDifference = 0;\n    let isDuplicate = false;\n    let inComment = false;\n    let currentValue = 0; // can be a difference or a duplicate\n    let lastValue = 0; // must be the real last value\n    let isNegative = false;\n    let inValue = false;\n    let skipFirstValue = false;\n    let decimalPosition = 0;\n    for (; i <= value.length; i++) {\n        if (i === value.length)\n            ascii = 13;\n        else\n            ascii = value.charCodeAt(i);\n        if (inComment) {\n            // we should ignore the text if we are after $$\n            if (ascii === 13 || ascii === 10) {\n                newLine = true;\n                inComment = false;\n            }\n        }\n        else {\n            // when is it a new value ?\n            // when it is not a digit, . or comma\n            // it is a number that is either new or we continue\n            if (ascii <= 57 && ascii >= 48) {\n                // a number\n                inValue = true;\n                if (decimalPosition > 0) {\n                    currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n                }\n                else {\n                    currentValue *= 10;\n                    currentValue += ascii - 48;\n                }\n            }\n            else if (ascii === 44 || ascii === 46) {\n                // a \",\" or \".\"\n                inValue = true;\n                decimalPosition++;\n            }\n            else {\n                if (inValue) {\n                    // need to process the previous value\n                    if (newLine) {\n                        newLine = false; // we don't check the X value\n                        // console.log(\"NEW LINE\",isDifference, lastDifference);\n                        // if new line and lastDifference, the first value is just a check !\n                        // that we don't check ...\n                        if (isLastDifference)\n                            skipFirstValue = true;\n                    }\n                    else {\n                        // need to deal with duplicate and differences\n                        if (skipFirstValue) {\n                            skipFirstValue = false;\n                        }\n                        else {\n                            if (isDifference) {\n                                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                                isLastDifference = true;\n                                isDifference = false;\n                            }\n                            else if (!isDuplicate) {\n                                lastValue = isNegative ? 0 - currentValue : currentValue;\n                            }\n                            let duplicate = isDuplicate ? currentValue - 1 : 1;\n                            for (let j = 0; j < duplicate; j++) {\n                                if (isLastDifference) {\n                                    currentY += lastDifference;\n                                }\n                                else {\n                                    currentY = lastValue;\n                                }\n                                currentData.x.push(currentX);\n                                currentData.y.push(currentY * yFactor);\n                                currentX += deltaX;\n                            }\n                        }\n                    }\n                    isNegative = false;\n                    currentValue = 0;\n                    decimalPosition = 0;\n                    inValue = false;\n                    isDuplicate = false;\n                }\n                // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n                if (ascii < 74 && ascii > 63) {\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 64;\n                }\n                else if (ascii > 96 && ascii < 106) {\n                    // negative SQZ digits a b c d e f g h i (ascii 97-105)\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 96;\n                    isNegative = true;\n                }\n                else if (ascii === 115) {\n                    // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = 9;\n                }\n                else if (ascii > 82 && ascii < 91) {\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = ascii - 82;\n                }\n                else if (ascii > 73 && ascii < 83) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 73;\n                }\n                else if (ascii > 105 && ascii < 115) {\n                    // negative DIF digits j k l m n o p q r (ascii 106-114)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 105;\n                    isNegative = true;\n                }\n                else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n                    // $ sign, we need to check the next one\n                    inValue = true;\n                    inComment = true;\n                }\n                else if (ascii === 37) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = 0;\n                    isNegative = false;\n                }\n                else if (ascii === 45) {\n                    // a \"-\"\n                    // check if after there is a number, decimal or comma\n                    let ascii2 = value.charCodeAt(i + 1);\n                    if ((ascii2 >= 48 && ascii2 <= 57) ||\n                        ascii2 === 44 ||\n                        ascii2 === 46) {\n                        inValue = true;\n                        if (!newLine)\n                            isLastDifference = false;\n                        isNegative = true;\n                    }\n                }\n                else if (ascii === 13 || ascii === 10) {\n                    newLine = true;\n                    inComment = false;\n                }\n                // and now analyse the details ... space or tabulation\n                // if \"+\" we just don't care\n            }\n        }\n    }\n}\n//# sourceMappingURL=fastParseXYData.js.map","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\nexport default function parsePeakTable(spectrum, value, result) {\n    spectrum.isPeaktable = true;\n    if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n        parseXY(spectrum, value, result);\n    }\n    else {\n        parseXYZ(spectrum, value, result);\n    }\n    // we will add the data in the variables\n    if (spectrum.variables) {\n        for (let key in spectrum.variables) {\n            spectrum.variables[key].data = spectrum.data[key];\n        }\n    }\n}\nfunction parseXY(spectrum, value, result) {\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % 2 === 0) {\n            for (let j = 0; j < values.length; j = j + 2) {\n                // takes around 40% of the time to add and parse the 2 values nearly exclusively because of Number\n                currentData.x.push(Number(values[j]) * spectrum.xFactor);\n                currentData.y.push(Number(values[j + 1]) * spectrum.yFactor);\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\nfunction parseXYZ(spectrum, value, result) {\n    let currentData = {};\n    let variables = Object.keys(spectrum.variables);\n    let numberOfVariables = variables.length;\n    variables.forEach((variable) => (currentData[variable] = []));\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % numberOfVariables === 0) {\n            for (let j = 0; j < values.length; j++) {\n                // todo should try to find a xFactor (y, ...)\n                currentData[variables[j % numberOfVariables]].push(Number(values[j]));\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\n//# sourceMappingURL=parsePeakTable.js.map","export default function parseXYA(spectrum, value) {\n    let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n    spectrum.isXYAdata = true;\n    let values;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n        currentData.x.push(Number(values[0]));\n        currentData.y.push(Number(values[1]));\n    }\n}\n//# sourceMappingURL=parseXYA.js.map","import getMedian from 'ml-array-median';\nexport default function convertTo3DZ(spectra) {\n    let minZ = spectra[0].data.y[0];\n    let maxZ = minZ;\n    let ySize = spectra.length;\n    let xSize = spectra[0].data.x.length;\n    let z = new Array(ySize);\n    for (let i = 0; i < ySize; i++) {\n        z[i] = spectra[i].data.y;\n        for (let j = 0; j < xSize; j++) {\n            let value = z[i][j];\n            if (value < minZ)\n                minZ = value;\n            if (value > maxZ)\n                maxZ = value;\n        }\n    }\n    const firstX = spectra[0].data.x[0];\n    const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n    const firstY = spectra[0].pageValue;\n    const lastY = spectra[ySize - 1].pageValue;\n    // Because the min / max value are the only information about the matrix if we invert\n    // min and max we need to invert the array\n    if (firstX > lastX) {\n        for (let spectrum of z) {\n            spectrum.reverse();\n        }\n    }\n    if (firstY > lastY) {\n        z.reverse();\n    }\n    const medians = [];\n    for (let i = 0; i < z.length; i++) {\n        const row = Float64Array.from(z[i]);\n        for (let i = 0; i < row.length; i++) {\n            if (row[i] < 0)\n                row[i] = -row[i];\n        }\n        medians.push(getMedian(row));\n    }\n    const median = getMedian(medians);\n    return {\n        z: z,\n        minX: Math.min(firstX, lastX),\n        maxX: Math.max(firstX, lastX),\n        minY: Math.min(firstY, lastY),\n        maxY: Math.max(firstY, lastY),\n        minZ: minZ,\n        maxZ: maxZ,\n        noise: median,\n    };\n}\n//# sourceMappingURL=convertTo3DZ.js.map","export default function generateContourLines(zData, options) {\n    let noise = zData.noise;\n    let z = zData.z;\n    let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n    let isOver0, isOver1, isOver2, isOver3;\n    let nbSubSpectra = z.length;\n    let nbPovars = z[0].length;\n    let pAx, pAy, pBx, pBy;\n    let x0 = zData.minX;\n    let xN = zData.maxX;\n    let dx = (xN - x0) / (nbPovars - 1);\n    let y0 = zData.minY;\n    let yN = zData.maxY;\n    let dy = (yN - y0) / (nbSubSpectra - 1);\n    let minZ = zData.minZ;\n    let maxZ = zData.maxZ;\n    // System.out.prvarln('y0 '+y0+' yN '+yN);\n    // -------------------------\n    // Povars attribution\n    //\n    // 0----1\n    // |  / |\n    // | /  |\n    // 2----3\n    //\n    // ---------------------d------\n    let iter = options.nbContourLevels * 2;\n    let contourLevels = new Array(iter);\n    let lineZValue;\n    for (let level = 0; level < iter; level++) {\n        // multiply by 2 for positif and negatif\n        let contourLevel = {};\n        contourLevels[level] = contourLevel;\n        let side = level % 2;\n        let factor = (maxZ - options.noiseMultiplier * noise) *\n            Math.exp((level >> 1) - options.nbContourLevels);\n        if (side === 0) {\n            lineZValue = factor + options.noiseMultiplier * noise;\n        }\n        else {\n            lineZValue = 0 - factor - options.noiseMultiplier * noise;\n        }\n        let lines = [];\n        contourLevel.zValue = lineZValue;\n        contourLevel.lines = lines;\n        if (lineZValue <= minZ || lineZValue >= maxZ)\n            continue;\n        for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n            let subSpectra = z[iSubSpectra];\n            let subSpectraAfter = z[iSubSpectra + 1];\n            for (let povar = 0; povar < nbPovars - 1; povar++) {\n                povarHeight0 = subSpectra[povar];\n                povarHeight1 = subSpectra[povar + 1];\n                povarHeight2 = subSpectraAfter[povar];\n                povarHeight3 = subSpectraAfter[povar + 1];\n                isOver0 = povarHeight0 > lineZValue;\n                isOver1 = povarHeight1 > lineZValue;\n                isOver2 = povarHeight2 > lineZValue;\n                isOver3 = povarHeight3 > lineZValue;\n                // Example povar0 is over the plane and povar1 and\n                // povar2 are below, we find the varersections and add\n                // the segment\n                if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n                    pAx =\n                        povar + (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n                    pAy = iSubSpectra;\n                    pBx = povar;\n                    pBy =\n                        iSubSpectra +\n                            (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // remove push does not help !!!!\n                if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n                    pAx = povar + 1;\n                    pAy =\n                        iSubSpectra +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n                    pBx =\n                        povar +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n                    pBy = iSubSpectra + 1;\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // test around the diagonal\n                if (isOver1 !== isOver2) {\n                    pAx =\n                        (povar +\n                            1 -\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dx +\n                            x0;\n                    pAy =\n                        (iSubSpectra +\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dy +\n                            y0;\n                    if (isOver1 !== isOver0) {\n                        pBx =\n                            povar +\n                                1 -\n                                (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n                        pBy = iSubSpectra;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver0) {\n                        pBx = povar;\n                        pBy =\n                            iSubSpectra +\n                                1 -\n                                (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver1 !== isOver3) {\n                        pBx = povar + 1;\n                        pBy =\n                            iSubSpectra +\n                                (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver3) {\n                        pBx =\n                            povar +\n                                (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n                        pBy = iSubSpectra + 1;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                }\n            }\n        }\n    }\n    return {\n        minX: zData.minX,\n        maxX: zData.maxX,\n        minY: zData.minY,\n        maxY: zData.maxY,\n        segments: contourLevels,\n    };\n}\n//# sourceMappingURL=generateContourLines.js.map","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\nexport default function add2D(result, options) {\n    let zData = convertTo3DZ(result.spectra);\n    if (!options.noContour) {\n        result.contourLines = generateContourLines(zData, options);\n        delete zData.z;\n    }\n    result.minMax = zData;\n}\n//# sourceMappingURL=add2D.js.map","export const gyromagneticRatio = {\n    '1H': 267.52218744e6,\n    '2H': 41.065e6,\n    '3H': 285.3508e6,\n    '3He': -203.789e6,\n    '7Li': 103.962e6,\n    '13C': 67.28284e6,\n    '14N': 19.331e6,\n    '15N': -27.116e6,\n    '17O': -36.264e6,\n    '19F': 251.662e6,\n    '23Na': 70.761e6,\n    '27Al': 69.763e6,\n    '29Si': -53.19e6,\n    '31P': 108.291e6,\n    '57Fe': 8.681e6,\n    '63Cu': 71.118e6,\n    '67Zn': 16.767e6,\n    '129Xe': -73.997e6,\n};\n//# sourceMappingURL=index.js.map","import { gyromagneticRatio } from 'gyromagnetic-ratio';\nexport default function postProcessingNMR(entriesFlat) {\n    // specific NMR functions\n    for (let entry of entriesFlat) {\n        let observeFrequency = 0;\n        let shiftOffsetVal = 0;\n        for (let spectrum of entry.spectra) {\n            if (entry.ntuples && entry.ntuples.symbol) {\n                if (!observeFrequency && spectrum.observeFrequency) {\n                    observeFrequency = spectrum.observeFrequency;\n                }\n                if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n                    shiftOffsetVal = spectrum.shiftOffsetVal;\n                }\n            }\n            else {\n                observeFrequency = spectrum.observeFrequency;\n                shiftOffsetVal = spectrum.shiftOffsetVal;\n            }\n            if (observeFrequency) {\n                if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n                    spectrum.xUnits = 'PPM';\n                    spectrum.xFactor = spectrum.xFactor / observeFrequency;\n                    spectrum.firstX = spectrum.firstX / observeFrequency;\n                    spectrum.lastX = spectrum.lastX / observeFrequency;\n                    spectrum.deltaX = spectrum.deltaX / observeFrequency;\n                    for (let i = 0; i < spectrum.data.x.length; i++) {\n                        spectrum.data.x[i] /= observeFrequency;\n                    }\n                }\n            }\n            if (shiftOffsetVal) {\n                let shift = spectrum.firstX - shiftOffsetVal;\n                spectrum.firstX = spectrum.firstX - shift;\n                spectrum.lastX = spectrum.lastX - shift;\n                for (let i = 0; i < spectrum.data.x.length; i++) {\n                    spectrum.data.x[i] -= shift;\n                }\n            }\n            // we will check if some nucleus are missing ...\n            if (entry.ntuples && entry.ntuples.nucleus && entry.ntuples.symbol) {\n                for (let i = 0; i < entry.ntuples.nucleus.length; i++) {\n                    let symbol = entry.ntuples.symbol[i];\n                    let nucleus = entry.ntuples.nucleus[i];\n                    if (symbol.startsWith('F') && !nucleus) {\n                        if (symbol === 'F1') {\n                            // if F1 is defined we will use F2\n                            if (entry.tmp.$NUC2) {\n                                entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n                            }\n                            else {\n                                let f2index = entry.ntuples.symbol.indexOf('F2');\n                                if (f2index && entry.ntuples.nucleus[f2index]) {\n                                    entry.ntuples.nucleus[i] = entry.ntuples.nucleus[f2index];\n                                }\n                            }\n                        }\n                        if (symbol === 'F2')\n                            entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n                    }\n                    if (symbol === 'F2') {\n                        entry.yType = entry.ntuples.nucleus[0];\n                    }\n                }\n            }\n            if (observeFrequency &&\n                entry.ntuples &&\n                entry.ntuples.symbol &&\n                entry.ntuples.nucleus) {\n                let unit = '';\n                let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n                if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n                    unit = entry.ntuples.units[pageSymbolIndex];\n                }\n                if (unit !== 'PPM') {\n                    if (pageSymbolIndex !== 0) {\n                        throw Error('Not sure about this ntuples format');\n                    }\n                    let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n                    let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n                    if (!ratio0 || !ratio1) {\n                        throw Error('Problem with determination of gyromagnetic ratio');\n                    }\n                    let ratio = (ratio0 / ratio1) * observeFrequency;\n                    spectrum.pageValue /= ratio;\n                }\n            }\n        }\n    }\n}\n//# sourceMappingURL=postProcessingNMR.js.map","export default function profiling(result, action, options) {\n    if (result.profiling) {\n        result.profiling.push({\n            action,\n            time: Date.now() - options.start,\n        });\n    }\n}\n//# sourceMappingURL=profiling.js.map","export default function simpleChromatogram(result) {\n    let data = result.spectra[0].data;\n    result.chromatogram = {\n        times: data.x.slice(),\n        series: {\n            intensity: {\n                dimension: 1,\n                data: data.y.slice(),\n            },\n        },\n    };\n}\n//# sourceMappingURL=simpleChromatogram.js.map","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\nexport default function postProcessing(entriesFlat, result, options) {\n    // converting Hz to ppm\n    postProcessingNMR(entriesFlat);\n    for (let entry of entriesFlat) {\n        if (Object.keys(entry.ntuples).length > 0) {\n            let newNtuples = [];\n            let keys = Object.keys(entry.ntuples);\n            for (let i = 0; i < keys.length; i++) {\n                let key = keys[i];\n                let values = entry.ntuples[key];\n                for (let j = 0; j < values.length; j++) {\n                    if (!newNtuples[j])\n                        newNtuples[j] = {};\n                    newNtuples[j][key] = values[j];\n                }\n            }\n            entry.ntuples = newNtuples;\n        }\n        if (entry.twoD && options.wantXY) {\n            add2D(entry, options);\n            profiling(result, 'Finished countour plot calculation', options);\n            if (!options.keepSpectra) {\n                delete entry.spectra;\n            }\n        }\n        // maybe it is a GC (HPLC) / MS. In this case we add a new format\n        if (options.chromatogram) {\n            if (entry.spectra.length > 1) {\n                complexChromatogram(entry);\n            }\n            else {\n                simpleChromatogram(entry);\n            }\n            profiling(result, 'Finished chromatogram calculation', options);\n        }\n        delete entry.tmp;\n    }\n}\n//# sourceMappingURL=postProcessing.js.map","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n    let xIndex = -1;\n    let yIndex = -1;\n    let firstVariable = '';\n    let secondVariable = '';\n    if (kind.indexOf('++') > 0) {\n        firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n        secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n    }\n    else {\n        kind = kind.replace(/[^a-zA-Z]/g, '');\n        firstVariable = kind.charAt(0);\n        secondVariable = kind.charAt(1);\n        spectrum.variables = {};\n        for (let symbol of kind) {\n            let lowerCaseSymbol = symbol.toLowerCase();\n            let index = currentEntry.ntuples.symbol.indexOf(symbol);\n            if (index === -1)\n                throw Error(`Symbol undefined: ${symbol}`);\n            spectrum.variables[lowerCaseSymbol] = {};\n            for (let key in currentEntry.ntuples) {\n                if (currentEntry.ntuples[key][index]) {\n                    spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n                        currentEntry.ntuples[key][index];\n                }\n            }\n        }\n    }\n    xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n    yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n    if (xIndex === -1)\n        xIndex = 0;\n    if (yIndex === -1)\n        yIndex = 0;\n    if (currentEntry.ntuples.first) {\n        if (currentEntry.ntuples.first.length > xIndex) {\n            spectrum.firstX = currentEntry.ntuples.first[xIndex];\n        }\n        if (currentEntry.ntuples.first.length > yIndex) {\n            spectrum.firstY = currentEntry.ntuples.first[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.last) {\n        if (currentEntry.ntuples.last.length > xIndex) {\n            spectrum.lastX = currentEntry.ntuples.last[xIndex];\n        }\n        if (currentEntry.ntuples.last.length > yIndex) {\n            spectrum.lastY = currentEntry.ntuples.last[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.vardim &&\n        currentEntry.ntuples.vardim.length > xIndex) {\n        spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n    }\n    if (currentEntry.ntuples.factor) {\n        if (currentEntry.ntuples.factor.length > xIndex) {\n            spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n        }\n        if (currentEntry.ntuples.factor.length > yIndex) {\n            spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.units) {\n        if (currentEntry.ntuples.units.length > xIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[xIndex]) {\n                spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n            }\n            else {\n                spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n            }\n        }\n        if (currentEntry.ntuples.units.length > yIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[yIndex]) {\n                spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n            }\n            else {\n                spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n            }\n        }\n    }\n}\n//# sourceMappingURL=prepareNtuplesDatatable.js.map","export default function prepareSpectrum(spectrum) {\n    if (!spectrum.xFactor)\n        spectrum.xFactor = 1;\n    if (!spectrum.yFactor)\n        spectrum.yFactor = 1;\n}\n//# sourceMappingURL=prepareSpectrum.js.map","import { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\nimport { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\nconst defaultOptions = {\n    keepRecordsRegExp: /^$/,\n    canonicDataLabels: true,\n    canonicMetadataLabels: false,\n    dynamicTyping: true,\n    withoutXY: false,\n    chromatogram: false,\n    keepSpectra: false,\n    noContour: false,\n    nbContourLevels: 7,\n    noiseMultiplier: 5,\n    profiling: false,\n};\n/**\n *\n * @typedef {object} ConvertOptions\n * @property {RegExp} [options.keepRecordsRegExp=/^$/] - By default we don't keep meta information.\n * @property {boolean} [options.canonicDataLabels=true] - Canonize the Labels (uppercase without symbol).\n * @property {boolean} [options.canonicMetadataLabels=false] - Canonize the metadata Labels (uppercase without symbol).\n * @property {boolean} [options.dynamicTyping=false] - Convert numbers to Number.\n * @property {boolean} [options.withoutXY=false] - Remove the XY data.\n * @property {boolean} [options.chromatogram=false] - Special post-processing for GC / HPLC / MS.\n * @property {boolean} [options.keepSpectra=false] - Force to keep the spectra in case of 2D.\n * @property {boolean} [options.noContour=false] - Don't calculate countour in case of 2D.\n * @property {number} [options.nbContourLevels=7] - Number of positive / negative contour levels to calculate.\n * @property {number} [options.noiseMultiplier=5] - Define for 2D the level as 5 times the median as default.\n * @property {boolean} [options.profiling=false] - Add profiling information.\n */\n/**\n *\n * @typedef {object} Ntuples\n * @property {string[]} [varname]\n * @property {string[]} [symbol]\n * @property {string[]} [vartype]\n * @property {string[]} [varform]\n * @property {number[]} [vardim]\n * @property {string[]} [units]\n * @property {number[]} [factor]\n * @property {number[]} [first]\n * @property {number[]} [last]\n * @property {number[]} [min]\n * @property {number[]} [max]\n * @property {string[]} [nucleus]\n */\n/**\n * @typedef { Record<string, any> } Spectrum\n * @property {Record<string, number[]>} [data]\n * @property {number} [firstX]\n * @property {number} [lastX]\n * @property {number} [deltaX]\n * @property {number} [yFactor]\n * @property {number} [xFactor]\n * @property {number} [nbPoints]\n */\n/**\n *\n * @typedef {object} Entry\n * @property {Spectrum[]} spectra\n * @property {Ntuples} ntuples\n * @property {object} meta\n * @property {object} tmp\n * @property {string} [title]\n * @property {string} [dataType]\n * @property {string} [dataClass]\n * @property {boolean} [twoD]\n */\n/**\n *\n * @typedef { object } ConvertResult\n * @property { object[] | boolean } profiling\n * @property { string[] } logs\n * @property { object[] } entries\n * @property { Entry[] } flatten\n */\n/**\n * Parse a jcamp.\n *\n * @param {string|ArrayBuffer|Uint8Array} jcamp\n * @param {ConvertOptions} [options]\n * @returns {ConvertResult}\n */\nexport function convert(jcamp, options = {}) {\n    jcamp = ensureString(jcamp);\n    options = { ...defaultOptions, ...options };\n    options.wantXY = !options.withoutXY;\n    options.start = Date.now();\n    let entriesFlat = [];\n    let result = {\n        profiling: options.profiling ? [] : false,\n        logs: [],\n        entries: [],\n    };\n    let tmpResult = { children: [] };\n    let currentEntry = tmpResult;\n    let parentsStack = [];\n    let spectrum = {};\n    if (typeof jcamp !== 'string') {\n        throw new TypeError('the JCAMP should be a string');\n    }\n    profiling(result, 'Before split to LDRS', options);\n    let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n    profiling(result, 'Split to LDRS', options);\n    if (ldrs[0])\n        ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n    for (let ldr of ldrs) {\n        // This is a new LDR\n        let position = ldr.indexOf('=');\n        let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n        let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n        let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n        if (canonicDataLabel === 'DATATABLE') {\n            let endLine = dataValue.indexOf('\\n');\n            if (endLine === -1)\n                endLine = dataValue.indexOf('\\r');\n            if (endLine > 0) {\n                // ##DATA TABLE= (X++(I..I)), XYDATA\n                // We need to find the variables\n                let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n                prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n                spectrum.datatable = infos[0];\n                if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n                    canonicDataLabel = 'PEAKTABLE';\n                }\n                else if (infos[1] &&\n                    (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)) {\n                    canonicDataLabel = 'XYDATA';\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                }\n            }\n        }\n        if (canonicDataLabel === 'XYDATA') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n                if (dataValue.match(/.*\\+\\+.*/)) {\n                    // ex: (X++(Y..Y))\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                    fastParseXYData(spectrum, dataValue, result);\n                }\n                else {\n                    parsePeakTable(spectrum, dataValue, result);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        else if (canonicDataLabel === 'PEAKTABLE') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                parsePeakTable(spectrum, dataValue, result);\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n            if (options.wantXY) {\n                if (dataValue.match(/.*(XYA).*/)) {\n                    // ex: (XYA)\n                    parseXYA(spectrum, dataValue);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'TITLE') {\n            let parentEntry = currentEntry;\n            if (!parentEntry.children) {\n                parentEntry.children = [];\n            }\n            currentEntry = {\n                spectra: [],\n                ntuples: {},\n                info: {},\n                meta: {},\n                tmp: {}, // tmp information we need to keep for postprocessing\n            };\n            parentEntry.children.push(currentEntry);\n            parentsStack.push(parentEntry);\n            entriesFlat.push(currentEntry);\n            currentEntry.title = dataValue;\n        }\n        else if (canonicDataLabel === 'DATATYPE') {\n            currentEntry.dataType = dataValue;\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'NTUPLES') {\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'DATACLASS') {\n            currentEntry.dataClass = dataValue;\n        }\n        else if (canonicDataLabel === 'XUNITS') {\n            spectrum.xUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'YUNITS') {\n            spectrum.yUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'FIRSTX') {\n            spectrum.firstX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTX') {\n            spectrum.lastX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'FIRSTY') {\n            spectrum.firstY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTY') {\n            spectrum.lastY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'NPOINTS') {\n            spectrum.nbPoints = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'XFACTOR') {\n            spectrum.xFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'YFACTOR') {\n            spectrum.yFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXX') {\n            spectrum.maxX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINX') {\n            spectrum.minX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXY') {\n            spectrum.maxY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINY') {\n            spectrum.minY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'DELTAX') {\n            spectrum.deltaX = Number(dataValue);\n        }\n        else if (canonicDataLabel === '.OBSERVEFREQUENCY' ||\n            canonicDataLabel === '$SFO1') {\n            if (!spectrum.observeFrequency) {\n                spectrum.observeFrequency = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n            if (!spectrum.xType) {\n                currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n            }\n        }\n        else if (canonicDataLabel === '$OFFSET') {\n            // OFFSET for Bruker spectra\n            currentEntry.shiftOffsetNum = 0;\n            if (!spectrum.shiftOffsetVal) {\n                spectrum.shiftOffsetVal = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '$REFERENCEPOINT') {\n            // OFFSET for Varian spectra\n            // if we activate this part it does not work for ACD specmanager\n            //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n            //                 var parts = dataValue.split(/ *, */);\n            //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n            //                 spectrum.shiftOffsetVal = Number(parts[3].trim());\n        }\n        else if (canonicDataLabel === 'VARNAME') {\n            currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'SYMBOL') {\n            currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARTYPE') {\n            currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARFORM') {\n            currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARDIM') {\n            currentEntry.ntuples.vardim = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'UNITS') {\n            currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'FACTOR') {\n            currentEntry.ntuples.factor = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'FIRST') {\n            currentEntry.ntuples.first = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'LAST') {\n            currentEntry.ntuples.last = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MIN') {\n            currentEntry.ntuples.min = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MAX') {\n            currentEntry.ntuples.max = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === '.NUCLEUS') {\n            if (currentEntry.ntuples) {\n                currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n            }\n        }\n        else if (canonicDataLabel === 'PAGE') {\n            spectrum.page = dataValue.trim();\n            spectrum.pageValue = Number(dataValue.replace(/^.*=/, ''));\n            spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n        }\n        else if (canonicDataLabel === 'RETENTIONTIME') {\n            spectrum.pageValue = Number(dataValue);\n        }\n        else if (isMSField(canonicDataLabel)) {\n            spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n        }\n        else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n            spectrum.sampleDescription = dataValue;\n        }\n        else if (canonicDataLabel.startsWith('$NUC')) {\n            if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n                currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n            }\n        }\n        else if (canonicDataLabel === 'END') {\n            currentEntry = parentsStack.pop();\n        }\n        if (currentEntry &&\n            currentEntry.info &&\n            currentEntry.meta &&\n            canonicDataLabel.match(options.keepRecordsRegExp)) {\n            let value = dataValue.trim();\n            let target, label;\n            if (dataLabel.startsWith('$')) {\n                label = options.canonicMetadataLabels\n                    ? canonicDataLabel.substring(1)\n                    : dataLabel.substring(1);\n                target = currentEntry.meta;\n            }\n            else {\n                label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n                target = currentEntry.info;\n            }\n            if (options.dynamicTyping) {\n                value = parseString(value);\n            }\n            if (target[label]) {\n                if (!Array.isArray(target[label])) {\n                    target[label] = [target[label]];\n                }\n                target[label].push(value);\n            }\n            else {\n                target[label] = value;\n            }\n        }\n    }\n    profiling(result, 'Finished parsing', options);\n    postProcessing(entriesFlat, result, options);\n    profiling(result, 'Total time', options);\n    /*\n    if (result.children && result.children.length>0) {\n      result = { ...result, ...result.children[0] };\n    }\n    */\n    result.entries = tmpResult.children;\n    result.flatten = entriesFlat;\n    return result;\n}\n//# sourceMappingURL=convert.js.map","import { convert } from 'jcampconverter';\nimport { Analysis } from '../Analysis';\n/**\n * Creates a new Analysis from a JCAMP string\n * @param {string} jcamp - String containing the JCAMP data\n * @param {object} [options={}]\n * @param {object} [options.id=Math.random()]\n * @param {string} [options.label=options.id] human redeable label\n * @param {string} [options.spectrumCallback] a callback to apply on variables when creating spectrum\n * @return {Analysis} - New class element with the given data\n */\nexport function fromJcamp(jcamp, options = {}) {\n    let analysis = new Analysis(options);\n    addJcamp(analysis, jcamp);\n    return analysis;\n}\nfunction addJcamp(analysis, jcamp) {\n    let converted = convert(jcamp, {\n        keepRecordsRegExp: /.*/,\n    });\n    for (let entry of converted.flatten) {\n        if (!entry.spectra || !entry.spectra[0])\n            continue;\n        let currentSpectrum = entry.spectra[0];\n        // we ensure variables\n        if (!currentSpectrum.variables) {\n            const variables = {};\n            currentSpectrum.variables = variables;\n            variables.x = {\n                label: currentSpectrum.xUnits,\n                symbol: 'X',\n                data: currentSpectrum.data.x || currentSpectrum.data.X,\n            };\n            variables.y = {\n                label: currentSpectrum.yUnits,\n                symbol: 'Y',\n                data: currentSpectrum.data.y || currentSpectrum.data.Y,\n            };\n        }\n        else {\n            for (let key in currentSpectrum.variables) {\n                const variable = currentSpectrum.variables[key];\n                if (variable.label)\n                    continue;\n                variable.label = variable.name || variable.symbol || key;\n                if (variable.units && !variable.label.includes(variable.units)) {\n                    variable.label += ` [${variable.units}]`;\n                }\n            }\n        }\n        analysis.pushSpectrum(currentSpectrum.variables, {\n            dataType: entry.dataType,\n            title: entry.title,\n            meta: entry.meta,\n        });\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUpjYW1wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zyb20vZnJvbUpjYW1wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3ZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUEyQixFQUFFLE9BQU8sR0FBRyxFQUFFO0lBQ2pFLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLFFBQWtCLEVBQUUsS0FBMkI7SUFDL0QsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRTtRQUM3QixpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCLENBQUMsQ0FBQztJQUVILEtBQUssSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUNsRCxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZDLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRTtZQUM5QixNQUFNLFNBQVMsR0FBcUMsRUFBRSxDQUFDO1lBQ3ZELGVBQWUsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLFNBQVMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ1osS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNO2dCQUM3QixNQUFNLEVBQUUsR0FBRztnQkFDWCxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZELENBQUM7WUFDRixTQUFTLENBQUMsQ0FBQyxHQUFHO2dCQUNaLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDN0IsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2RCxDQUFDO1NBQ0g7YUFBTTtZQUNMLEtBQUssSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDekMsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxRQUFRLENBQUMsS0FBSztvQkFBRSxTQUFTO2dCQUM3QixRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7Z0JBQ3pELElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDOUQsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQztpQkFDMUM7YUFDRjtTQUNGO1FBRUQsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO1lBQy9DLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyJ9","export const addInfoData = (data, keys = Object.keys(data), prefix = '##$') => {\n    let header = '';\n    for (const key of keys) {\n        header +=\n            typeof data[key] === 'object'\n                ? `${prefix}${key}=${JSON.stringify(data[key])}\\n`\n                : `${prefix}${key}=${data[key]}\\n`;\n    }\n    return header;\n};\n//# sourceMappingURL=addInfoData.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkNumberOrArray(data) {\n    if (!isAnyArray(data) || isAnyArray(data[0])) {\n        throw new Error(`x and y data should be an array of numbers`);\n    }\n}\n//# sourceMappingURL=checkNumberOrArray.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkMatrix(data) {\n    if (!isAnyArray(data) || !isAnyArray(data[0])) {\n        throw new Error(`2D data should be a matrix`);\n    }\n}\n//# sourceMappingURL=checkMatrix.js.map","import { isAnyArray } from 'is-any-array';\nimport { matrixMinMaxZ, xMinMaxValues, } from 'ml-spectra-processing';\nimport { checkMatrix } from './checkMatrix';\nimport { checkNumberOrArray } from './checkNumberOrArray';\nexport function getExtremeValues(data) {\n    if (isAnyArray(data[0])) {\n        checkMatrix(data);\n        const firstRow = data[0];\n        return {\n            firstLast: {\n                first: firstRow[0],\n                last: data[data.length - 1][data[0].length - 1],\n            },\n            minMax: matrixMinMaxZ(data),\n        };\n    }\n    checkNumberOrArray(data);\n    return {\n        firstLast: {\n            first: data[0],\n            last: data[data.length - 1],\n        },\n        minMax: xMinMaxValues(data),\n    };\n}\n//# sourceMappingURL=getExtremeValues.js.map","/**\n * class encodes a integer vector as a String in order to store it in a text file.\n * The algorithms used to encode the data are describe in:\n *            http://www.iupac.org/publications/pac/pdf/2001/pdf/7311x1765.pdf\n */\nconst newLine = '\\n';\nconst pseudoDigits = [\n    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],\n    ['@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],\n    ['@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],\n    ['%', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R'],\n    ['%', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r'],\n    [' ', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 's'],\n];\nconst SQZ_P = 1;\nconst SQZ_N = 2;\nconst DIF_P = 3;\nconst DIF_N = 4;\nconst DUP = 5;\nconst maxLinelength = 100;\n/**\n * This function encodes the given vector. The xyEncoding format is specified by the\n * xyEncoding option\n * @param xyEncoding: ('FIX','SQZ','DIF','DIFDUP','CVS','PAC') Default 'DIFDUP'\n * @return {string}\n */\nexport function vectorEncoder(data, firstX, intervalX, xyEncoding) {\n    switch (xyEncoding) {\n        case 'FIX':\n            return fixEncoding(data, firstX, intervalX);\n        case 'SQZ':\n            return squeezedEncoding(data, firstX, intervalX);\n        case 'DIF':\n            return differenceEncoding(data, firstX, intervalX);\n        case 'DIFDUP':\n            return differenceDuplicateEncoding(data, firstX, intervalX);\n        case 'CSV':\n            return commaSeparatedValuesEncoding(data, firstX, intervalX);\n        case 'PAC':\n            return packedEncoding(data, firstX, intervalX);\n        default:\n            return differenceEncoding(data, firstX, intervalX);\n    }\n}\n/**\n * @private\n * No data compression used. The data is separated by a comma(',').\n */\nexport function commaSeparatedValuesEncoding(data, firstX, intervalX) {\n    return fixEncoding(data, firstX, intervalX, ',');\n}\n/**\n * @private\n * No data compression used. The data is separated by the specified separator.\n */\nexport function fixEncoding(data, firstX, intervalX, separator = ' ') {\n    let outputData = '';\n    let j = 0;\n    let dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += Math.ceil(firstX + j * intervalX);\n        for (let i = 0; i < 8; i++) {\n            outputData += separator + data[j++];\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += Math.ceil(firstX + j * intervalX);\n        for (let i = j; i < dataLength; i++) {\n            outputData += separator + data[i];\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * No data compression used. The data is separated by the sign of the number.\n */\nexport function packedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    let j = 0;\n    let dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += Math.ceil(firstX + j * intervalX);\n        for (let i = 0; i < 8; i++) {\n            outputData += data[j] < 0 ? data[j++] : `+${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += Math.ceil(firstX + j * intervalX);\n        for (let i = j; i < dataLength; i++) {\n            outputData += data[i] < 0 ? data[i] : `+${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * Data compression is possible using the squeezed form (SQZ) in which the delimiter, the leading digit,\n * and sign are replaced by a pseudo-digit from Table 1. For example, the Y-values 30, 32 would be\n * represented as C0C2.\n */\nexport function squeezedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    // String outputData = new String();\n    let j = 0;\n    let dataLength = data.length;\n    while (j < dataLength - 10) {\n        outputData += Math.ceil(firstX + j * intervalX);\n        for (let i = 0; i < 10; i++) {\n            outputData += squeezedDigit(data[j++].toString());\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += Math.ceil(firstX + j * intervalX);\n        for (let i = j; i < dataLength; i++) {\n            outputData += squeezedDigit(data[i].toString());\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * Duplicate suppression xyEncoding\n */\nexport function differenceDuplicateEncoding(data, firstX, intervalX) {\n    let mult = 0;\n    let index = 0;\n    let charCount = 0;\n    // We built a string where we store the encoded data.\n    let encodedData = '';\n    let encodedNumber = '';\n    let temp = '';\n    // We calculate the differences vector\n    let diffData = new Array(data.length - 1);\n    for (let i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    // We simulate a line carry\n    let numDiff = diffData.length;\n    while (index < numDiff) {\n        if (charCount === 0) {\n            // Start line\n            encodedNumber =\n                Math.ceil(firstX + index * intervalX) +\n                    squeezedDigit(data[index].toString()) +\n                    differenceDigit(diffData[index].toString());\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else {\n            // Try to insert next difference\n            if (diffData[index - 1] === diffData[index]) {\n                mult++;\n            }\n            else {\n                if (mult > 0) {\n                    // Now we know that it can be in line\n                    mult++;\n                    encodedNumber = duplicateDigit(mult.toString());\n                    encodedData += encodedNumber;\n                    charCount += encodedNumber.length;\n                    mult = 0;\n                    index--;\n                }\n                else {\n                    // Mirar si cabe, en caso contrario iniciar una nueva linea\n                    encodedNumber = differenceDigit(diffData[index].toString());\n                    if (encodedNumber.length + charCount < maxLinelength) {\n                        encodedData += encodedNumber;\n                        charCount += encodedNumber.length;\n                    }\n                    else {\n                        // Iniciar nueva linea\n                        encodedData += newLine;\n                        temp =\n                            Math.ceil(firstX + index * intervalX) +\n                                squeezedDigit(data[index].toString()) +\n                                encodedNumber;\n                        encodedData += temp; // Each line start with first index number.\n                        charCount = temp.length;\n                    }\n                }\n            }\n        }\n        index++;\n    }\n    if (mult > 0) {\n        encodedData += duplicateDigit((mult + 1).toString());\n    }\n    // We insert the last data from fid. It is done to control of data\n    // The last line start with the number of datas in the fid.\n    encodedData +=\n        newLine +\n            Math.ceil(firstX + index * intervalX) +\n            squeezedDigit(data[index].toString());\n    return encodedData;\n}\n/**\n * @private\n * Differential xyEncoding\n */\nexport function differenceEncoding(data, firstX, intervalX) {\n    let index = 0;\n    let charCount = 0;\n    let i;\n    let encodedData = '';\n    let encodedNumber = '';\n    let temp = '';\n    // We calculate the differences vector\n    let diffData = new Array(data.length - 1);\n    for (i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    let numDiff = diffData.length;\n    while (index < numDiff) {\n        if (charCount === 0) {\n            // We convert the first number.\n            encodedNumber =\n                Math.ceil(firstX + index * intervalX) +\n                    squeezedDigit(data[index].toString()) +\n                    differenceDigit(diffData[index].toString());\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else {\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                encodedData += newLine;\n                temp =\n                    Math.ceil(firstX + index * intervalX) +\n                        squeezedDigit(data[index].toString()) +\n                        encodedNumber;\n                encodedData += temp; // Each line start with first index number.\n                charCount = temp.length;\n            }\n        }\n        index++;\n    }\n    // We insert the last number from data. It is done to control of data\n    encodedData +=\n        newLine +\n            Math.ceil(firstX + index * intervalX) +\n            squeezedDigit(data[index].toString());\n    return encodedData;\n}\n/**\n * @private\n * Convert number to the ZQZ format, using pseudo digits.\n */\nfunction squeezedDigit(num) {\n    let sqzDigits = '';\n    if (num.startsWith('-')) {\n        sqzDigits += pseudoDigits[SQZ_N][num.charCodeAt(1) - 48];\n        if (num.length > 2) {\n            sqzDigits += num.substring(2);\n        }\n    }\n    else {\n        sqzDigits += pseudoDigits[SQZ_P][num.charCodeAt(0) - 48];\n        if (num.length > 1) {\n            sqzDigits += num.substring(1);\n        }\n    }\n    return sqzDigits;\n}\n/**\n * Convert number to the DIF format, using pseudo digits.\n */\nfunction differenceDigit(num) {\n    let diffDigits = '';\n    if (num.startsWith('-')) {\n        diffDigits += pseudoDigits[DIF_N][num.charCodeAt(1) - 48];\n        if (num.length > 2) {\n            diffDigits += num.substring(2);\n        }\n    }\n    else {\n        diffDigits += pseudoDigits[DIF_P][num.charCodeAt(0) - 48];\n        if (num.length > 1) {\n            diffDigits += num.substring(1);\n        }\n    }\n    return diffDigits;\n}\n/**\n * Convert number to the DUP format, using pseudo digits.\n */\nfunction duplicateDigit(num) {\n    let dupDigits = '';\n    dupDigits += pseudoDigits[DUP][num.charCodeAt(0) - 48];\n    if (num.length > 1) {\n        dupDigits += num.substring(1);\n    }\n    return dupDigits;\n}\n//# sourceMappingURL=vectorEncoder.js.map","import { xDivide } from 'ml-spectra-processing';\nimport { addInfoData } from './utils/addInfoData';\nimport { checkNumberOrArray } from './utils/checkNumberOrArray';\nimport { getExtremeValues } from './utils/getExtremeValues';\nimport { vectorEncoder } from './utils/vectorEncoder';\n/**\n * Parse from a xyxy data array\n * @param variables - Variables to convert to jcamp\n * @param [options={}] - options that allows to add meta data in the jcamp\n * @return JCAMP-DX text file corresponding to the variables\n */\nexport default function creatorNtuples(variables, options) {\n    const { meta = {}, info = {}, xyEncoding = '' } = options;\n    const { title = '', owner = '', origin = '', dataType = '', xFactor = 1, yFactor = 1, } = info;\n    const symbol = [];\n    const varName = [];\n    const varType = [];\n    const varDim = [];\n    const units = [];\n    const first = [];\n    const last = [];\n    const min = [];\n    const max = [];\n    const keys = Object.keys(variables);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        let variable = variables[key];\n        if (!variable)\n            continue;\n        let name = variable?.label.replace(/ *\\[.*/, '');\n        let unit = variable?.label.replace(/.*\\[(?<units>.*)\\].*/, '$<units>');\n        const { firstLast, minMax } = getExtremeValues(variable.data);\n        symbol.push(variable.symbol || key);\n        varName.push(name || key);\n        varDim.push(variable.data.length);\n        first.push(firstLast.first);\n        last.push(firstLast.last);\n        max.push(minMax.max);\n        min.push(minMax.min);\n        if (variable.isDependent !== undefined) {\n            varType.push(variable.isDependent ? 'DEPENDENT' : 'INDEPENDENT');\n        }\n        else {\n            varType.push(variable.isDependent !== undefined\n                ? !variable.isDependent\n                : i === 0\n                    ? 'INDEPENDENT'\n                    : 'DEPENDENT');\n        }\n        units.push(variable.units || unit || '');\n    }\n    let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##DATA CLASS= NTUPLES\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n    const infoKeys = Object.keys(info).filter((e) => !['title', 'owner', 'origin', 'dataType'].includes(e));\n    header += addInfoData(info, infoKeys, '##');\n    header += addInfoData(meta);\n    header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${varName.join()}\n##SYMBOL=    ${symbol.join()}\n##VAR_TYPE=  ${varType.join()}\n##VAR_DIM=   ${varDim.join()}\n##UNITS=     ${units.join()}\n##FIRST=     ${first.join()}\n##LAST=      ${last.join()}\n##MIN=       ${min.join()}\n##MAX=       ${max.join()}\\n`;\n    if (options.isNMR) {\n        let xData = variables.x.data;\n        let yData = variables.y.data;\n        checkNumberOrArray(xData);\n        checkNumberOrArray(yData);\n        if (options.isPeakData) {\n            header += `##DATA TABLE= (XY..XY), PEAKS\\n`;\n            for (let point = 0; point < varDim[0]; point++) {\n                header += `${xData[point]}, ${yData[point]}\\n`;\n            }\n        }\n        else if (options.isXYData) {\n            const firstX = xData[0];\n            const lastX = xData[xData.length - 1];\n            const deltaX = (lastX - firstX) / xData.length;\n            for (const key of ['r', 'i']) {\n                const variable = variables[key];\n                if (variable) {\n                    checkNumberOrArray(variable.data);\n                    header += `##PAGE= ${key === 'r' ? 1 : 2}\\n`;\n                    header += `##DATA TABLE= (X++(${key === 'r' ? 'R..R' : 'I..I'})), XYDATA\\n`;\n                    header += vectorEncoder(xDivide(variable.data, yFactor, { output: variable.data }), firstX / xFactor, deltaX / xFactor, xyEncoding);\n                }\n            }\n        }\n    }\n    else {\n        header += `##PAGE= N=1\\n`;\n        header += `##DATA TABLE= (${symbol.join('')}..${symbol.join('')}), PEAKS\\n`;\n        for (let i = 0; i < variables.x.data.length; i++) {\n            let point = [];\n            for (let key of keys) {\n                let variable = variables[key];\n                if (!variable)\n                    continue;\n                point.push(variable.data[i]);\n            }\n            header += `${point.join('\\t')}\\n`;\n        }\n    }\n    header += `##NTUPLES= ${dataType}\\n`;\n    header += '##END=';\n    return header;\n}\n//# sourceMappingURL=creatorNtuples.js.map","export function getFactorNumber(minMax, maxValue = 2 ** 31 - 1) {\n    let factor;\n    if (minMax.min < 0) {\n        if (minMax.max > 0) {\n            factor = Math.max(-minMax.min, minMax.max) / maxValue;\n        }\n        else {\n            factor = -minMax.min / maxValue;\n        }\n    }\n    else {\n        factor = minMax.max / maxValue;\n    }\n    return factor;\n}\n//# sourceMappingURL=getFactorNumber.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getFactorNumber } from './getFactorNumber';\nexport function getBestFactor(array, options = {}) {\n    const { maxValue, factor, minMax } = options;\n    if (factor !== undefined) {\n        return factor;\n    }\n    // is there non integer number ?\n    let onlyInteger = true;\n    for (let y of array) {\n        if (Math.round(y) !== y) {\n            onlyInteger = false;\n            break;\n        }\n    }\n    if (onlyInteger) {\n        return 1;\n    }\n    // we need to rescale the values\n    // need to find the max and min values\n    const extremeValues = minMax || xMinMaxValues(array);\n    return getFactorNumber(extremeValues, maxValue);\n}\n//# sourceMappingURL=getBestFactor.js.map","/**\n * Reconvert number to original value\n * @param number Number used for computation\n * @param factor Multiplying factor\n * @returns Original value\n */\nexport function getNumber(number, factor) {\n    if (factor !== 1)\n        number /= factor;\n    const rounded = Math.round(number);\n    if (rounded !== number && Math.abs(rounded - number) <= Number.EPSILON) {\n        return rounded;\n    }\n    return number;\n}\n//# sourceMappingURL=getNumber.js.map","import { getNumber } from './getNumber';\nexport function peakTableCreator(data, options = {}) {\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    let firstX = Number.POSITIVE_INFINITY;\n    let lastX = Number.NEGATIVE_INFINITY;\n    let firstY = Number.POSITIVE_INFINITY;\n    let lastY = Number.NEGATIVE_INFINITY;\n    let lines = [];\n    for (let i = 0; i < data.x.length; i++) {\n        let x = data.x[i];\n        let y = data.y[i];\n        if (firstX > x) {\n            firstX = x;\n        }\n        if (lastX < x) {\n            lastX = x;\n        }\n        if (firstY > y) {\n            firstY = y;\n        }\n        if (lastY < y) {\n            lastY = y;\n        }\n    }\n    lines.push(`##FIRSTX=${firstX}`);\n    lines.push(`##LASTX=${lastX}`);\n    lines.push(`##FIRSTY=${firstY}`);\n    lines.push(`##LASTY=${lastY}`);\n    lines.push(`##XFACTOR=${xFactor}`);\n    lines.push(`##YFACTOR=${yFactor}`);\n    lines.push('##PEAK TABLE=(XY..XY)');\n    for (let i = 0; i < data.x.length; i++) {\n        lines.push(`${getNumber(data.x[i], xFactor)} ${getNumber(data.y[i], yFactor)}`);\n    }\n    return lines;\n}\n//# sourceMappingURL=peakTableCreator.js.map","import { xDivide } from 'ml-spectra-processing';\nexport function rescaleAndEnsureInteger(data, factor) {\n    if (factor === 1)\n        return data.map((value) => Math.round(value));\n    return xDivide(data, factor);\n}\n//# sourceMappingURL=rescaleAndEnsureInteger.js.map","import { rescaleAndEnsureInteger } from './rescaleAndEnsureInteger';\nimport { vectorEncoder } from './vectorEncoder';\nexport function xyDataCreator(data, options = {}) {\n    const { xyEncoding = 'DIF' } = options;\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    let firstX = data.x[0];\n    let lastX = data.x[data.x.length - 1];\n    let firstY = data.y[0];\n    let lastY = data.y[data.y.length - 1];\n    let nbPoints = data.x.length;\n    let deltaX = (lastX - firstX) / (nbPoints - 1);\n    let lines = [];\n    lines.push(`##FIRSTX=${firstX}`);\n    lines.push(`##LASTX=${lastX}`);\n    lines.push(`##FIRSTY=${firstY}`);\n    lines.push(`##LASTY=${lastY}`);\n    lines.push(`##DELTAX=${deltaX}`);\n    lines.push(`##XFACTOR=${xFactor}`);\n    lines.push(`##YFACTOR=${yFactor}`);\n    lines.push('##XYDATA=(X++(Y..Y))');\n    let line = vectorEncoder(rescaleAndEnsureInteger(data.y, yFactor), firstX / xFactor, deltaX / xFactor, xyEncoding);\n    if (line)\n        lines.push(line);\n    return lines;\n}\n//# sourceMappingURL=xyDataCreator.js.map","import { addInfoData } from './utils/addInfoData';\nimport { getBestFactor } from './utils/getBestFactor';\nimport { peakTableCreator } from './utils/peakTableCreator';\nimport { xyDataCreator } from './utils/xyDataCreator';\nconst infoDefaultKeys = [\n    'title',\n    'owner',\n    'origin',\n    'dataType',\n    'xUnits',\n    'yUnits',\n    'xFactor',\n    'yFactor',\n];\n/**\n * Create a jcamp\n * @param data object of array\n * @param [options={meta:{},info:{}} - metadata object\n * @returns JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n    const { meta = {}, info = {}, xyEncoding } = options;\n    let { title = '', owner = '', origin = '', dataType = '', xUnits = '', yUnits = '', xFactor, yFactor, } = info;\n    data = { x: data.x, y: data.y };\n    let header = `##TITLE=${title}\n##JCAMP-DX=4.24\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\n##XUNITS=${xUnits}\n##YUNITS=${yUnits}\\n`;\n    const infoKeys = Object.keys(info).filter((keys) => !infoDefaultKeys.includes(keys));\n    header += addInfoData(info, infoKeys, '##');\n    header += addInfoData(meta);\n    // we leave the header and utf8 fonts ${header.replace(/[^\\t\\n\\x20-\\x7F]/g, '')\n    if (xyEncoding) {\n        xFactor = getBestFactor(data.x, { factor: xFactor });\n        yFactor = getBestFactor(data.y, { factor: yFactor });\n        return `${header}##NPOINTS=${data.x.length}\n${xyDataCreator(data, { info: { xFactor, yFactor }, xyEncoding }).join('\\n')}\n##END=`;\n    }\n    else {\n        if (xFactor === undefined)\n            xFactor = 1;\n        if (yFactor === undefined)\n            yFactor = 1;\n        if (xFactor !== 1) {\n            //@ts-expect-error xFactor is always defined\n            data.x = data.x.map((value) => value / xFactor);\n        }\n        if (yFactor !== 1) {\n            //@ts-expect-error yFactor is always defined\n            data.y = data.y.map((value) => value / yFactor);\n        }\n        return `${header}##NPOINTS=${data.x.length}\n${peakTableCreator(data, { info: { xFactor, yFactor } }).join('\\n')}\n##END=`;\n    }\n}\n//# sourceMappingURL=fromJSON.js.map","import creatorNtuples from './creatorNtuples';\nimport { fromJSON } from './fromJSON';\nimport { checkNumberOrArray } from './utils/checkNumberOrArray';\n/**\n * Create a jcamp from variables\n */\nexport function fromVariables(\n/** object of variables */\nvariables, options = {}) {\n    const { info = {}, meta = {}, forceNtuples = false } = options;\n    let jcampOptions = {\n        info,\n        meta,\n    };\n    let keys = Object.keys(variables).map((key) => key.toLowerCase());\n    if (keys.length === 2 &&\n        keys.includes('x') &&\n        keys.includes('y') &&\n        !forceNtuples) {\n        let x = variables.x;\n        let xLabel = x.label || 'x';\n        if (variables.x.units) {\n            if (xLabel.includes(variables.x.units)) {\n                jcampOptions.info.xUnits = xLabel;\n            }\n            else {\n                jcampOptions.info.xUnits = `${xLabel} (${variables.x.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.xUnits = xLabel;\n        }\n        let y = variables.y;\n        let yLabel = y.label || 'y';\n        if (variables.y.units) {\n            if (yLabel.includes(variables.y.units)) {\n                jcampOptions.info.xUnits = yLabel;\n            }\n            else {\n                jcampOptions.info.yUnits = `${yLabel} (${variables.y.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.yUnits = yLabel;\n        }\n        const xData = variables.x.data;\n        const yData = variables.y.data;\n        checkNumberOrArray(xData);\n        checkNumberOrArray(yData);\n        return fromJSON({ x: xData, y: yData }, jcampOptions);\n    }\n    else {\n        return creatorNtuples(variables, options);\n    }\n}\n//# sourceMappingURL=fromVariables.js.map","import { fromVariables } from 'convert-to-jcamp';\nexport function toJcamps(analysis, options = {}) {\n    let jcamps = [];\n    for (let spectrum of analysis.spectra) {\n        jcamps.push(getJcamp(spectrum, options));\n    }\n    return jcamps;\n}\nfunction getJcamp(spectrum, options) {\n    const { info = {}, meta = {} } = options;\n    let jcampOptions = {\n        options: {},\n        info: {\n            title: spectrum.title,\n            dataType: spectrum.dataType,\n            ...info,\n        },\n        meta: { ...spectrum.meta, ...meta },\n    };\n    return fromVariables(spectrum.variables, jcampOptions);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9KY2FtcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG8vdG9KY2FtcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBU2pELE1BQU0sVUFBVSxRQUFRLENBQUMsUUFBa0IsRUFBRSxVQUEyQixFQUFFO0lBQ3hFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixLQUFLLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7UUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDMUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsUUFBa0IsRUFBRSxPQUF3QjtJQUM1RCxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpDLElBQUksWUFBWSxHQUFHO1FBQ2pCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsSUFBSSxFQUFFO1lBQ0osS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1lBQ3JCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixHQUFHLElBQUk7U0FDUjtRQUNELElBQUksRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtLQUNwQyxDQUFDO0lBRUYsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN6RCxDQUFDIn0=","import { toJcamps } from './toJcamps';\nexport function toJcamp(analysis, options = {}) {\n    return toJcamps(analysis, options).join('\\n');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9KY2FtcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90by90b0pjYW1wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNdEMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxRQUFrQixFQUFFLFVBQTJCLEVBQUU7SUFDdkUsT0FBTyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDIn0=","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nexport class Gaussian {\n    constructor(options = {}) {\n        const { fwhm = 500, sd } = options;\n        this.fwhm = sd ? gaussianWidthToFWHM(2 * sd) : fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fct(x) {\n        return gaussianFct(x, this.fwhm);\n    }\n    getArea(height = calculateGaussianHeight({ fwhm: this.fwhm })) {\n        return getGaussianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getGaussianFactor(area);\n    }\n    getData(options = {}) {\n        return getGaussianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateGaussianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport function calculateGaussianHeight(options) {\n    let { fwhm = 500, area = 1, sd } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (2 * area) / ROOT_PI_OVER_LN2 / fwhm;\n}\nexport function gaussianFct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\nexport function gaussianWidthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\nexport function gaussianFwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\nexport function getGaussianArea(options) {\n    let { fwhm = 500, sd, height = 1 } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\nexport function getGaussianFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\nexport function getGaussianData(shape = {}, options = {}) {\n    let { fwhm = 500, sd } = shape;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    let { length, factor = getGaussianFactor(), height = calculateGaussianHeight({ fwhm }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = gaussianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from '../../../util/constants';\nexport class Lorentzian {\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianFct(x, this.fwhm);\n    }\n    getArea(height = 1) {\n        return getLorentzianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const calculateLorentzianHeight = ({ fwhm = 1, area = 1 }) => {\n    return (2 * area) / Math.PI / fwhm;\n};\nexport const lorentzianFct = (x, fwhm) => {\n    return Math.pow(fwhm, 2) / (4 * Math.pow(x, 2) + Math.pow(fwhm, 2));\n};\nexport const lorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const lorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nexport const getLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1 } = options;\n    return (height * Math.PI * fwhm) / 2;\n};\nexport const getLorentzianFactor = (area = 0.9999) => {\n    return 2 * Math.tan(Math.PI * (area - 0.5));\n};\nexport const getLorentzianData = (shape = {}, options = {}) => {\n    let { fwhm = 500 } = shape;\n    let { length, factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = lorentzianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=Lorentzian.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { gaussianFct, getGaussianFactor } from '../gaussian/Gaussian';\nimport { lorentzianFct, getLorentzianFactor } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt {\n    constructor(options = {}) {\n        const { fwhm = 500, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return pseudoVoigtFwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return pseudoVoigtWidthToFWHM(width, mu);\n    }\n    fct(x) {\n        return pseudoVoigtFct(x, this.fwhm, this.mu);\n    }\n    getArea(height = 1) {\n        return getPseudoVoigtArea({ fwhm: this.fwhm, height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getPseudoVoigtFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor, height = calculatePseudoVoigtHeight({\n            fwhm: this.fwhm,\n            mu: this.mu,\n            area: 1,\n        }), } = options;\n        return getPseudoVoigtData(this, { factor, length, height });\n    }\n    calculateHeight(area = 1) {\n        return calculatePseudoVoigtHeight({ fwhm: this.fwhm, mu: this.mu, area });\n    }\n    getParameters() {\n        return ['fwhm', 'mu'];\n    }\n}\nexport const calculatePseudoVoigtHeight = (options = {}) => {\n    let { fwhm = 1, mu = 0.5, area = 1 } = options;\n    return (2 * area) / (fwhm * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI));\n};\nexport const pseudoVoigtFct = (x, fwhm, mu) => {\n    return (1 - mu) * lorentzianFct(x, fwhm) + mu * gaussianFct(x, fwhm);\n};\nexport const pseudoVoigtWidthToFWHM = (width, mu = 0.5) => {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const pseudoVoigtFwhmToWidth = (fwhm, mu = 0.5) => {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const getPseudoVoigtArea = (options) => {\n    const { fwhm = 500, height = 1, mu = 0.5 } = options;\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\nexport const getPseudoVoigtFactor = (area = 0.9999, mu = 0.5) => {\n    return mu < 1 ? getLorentzianFactor(area) : getGaussianFactor(area);\n};\nexport const getPseudoVoigtData = (shape = {}, options = {}) => {\n    let { fwhm = 500, mu = 0.5 } = shape;\n    let { length, factor = getPseudoVoigtFactor(0.999, mu), height = calculatePseudoVoigtHeight({ fwhm, mu, area: 1 }), } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = pseudoVoigtFct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=PseudoVoigt.js.map","import { Gaussian } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of gaussian functions. The Gaussian\n * parameters are divided in 3 batches. 1st: centers; 2nd: height; 3th: widths;\n * @param parameters - Gaussian parameters\n */\nexport function sumOfGaussians(parameters) {\n    const nL = parameters.length / 3;\n    const gaussian = new Gaussian();\n    return (x) => {\n        let y = 0;\n        for (let i = 0; i < nL; i++) {\n            gaussian.fwhm = parameters[i + nL * 2];\n            y += parameters[i + nL] * gaussian.fct(x - parameters[i]);\n        }\n        return y;\n    };\n}\n//# sourceMappingURL=sumOfGaussians.js.map","import { Lorentzian } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of lorentzian functions. The Lorentzian\n * parameters are divided in 3 batches. 1st: centers; 2nd: heights; 3th: widths;\n * @param parameters - Lorentzian parameters\n */\nexport function sumOfLorentzians(parameters) {\n    const lorentzian = new Lorentzian();\n    return (x) => {\n        let nL = parameters.length / 3;\n        let y = 0;\n        for (let i = 0; i < nL; i++) {\n            lorentzian.fwhm = parameters[i + nL * 2];\n            y += parameters[i + nL] * lorentzian.fct(x - parameters[i]);\n        }\n        return y;\n    };\n}\n//# sourceMappingURL=sumOfLorentzians.js.map","import { PseudoVoigt } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of linear combination of gaussian and lorentzian functions. The pseudo voigt\n * parameters are divided in 4 batches. 1st: centers; 2nd: heights; 3th: widths; 4th: mu's ;\n * @param parameters Lorentzian parameters\n */\nexport function sumOfPseudoVoigts(parameters) {\n    const pseudoVoigt = new PseudoVoigt();\n    return (x) => {\n        let nL = parameters.length / 4;\n        let y = 0;\n        for (let i = 0; i < nL; i++) {\n            pseudoVoigt.fwhm = parameters[i + nL * 2];\n            pseudoVoigt.mu = parameters[i + nL * 3];\n            y += parameters[i + nL] * pseudoVoigt.fct(x - parameters[i]);\n        }\n        return y;\n    };\n}\n//# sourceMappingURL=sumOfPseudoVoigts.js.map","const isValidKey = (key) => {\n    return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\nconst isObject = (val) => {\n    return typeof val === 'object';\n};\nconst isPrimitive = (val) => {\n    return typeof val === 'object' ? val === null : typeof val !== 'function';\n};\n/** Algorithm to assign deep\n * @param target\n */\nexport function assignDeep(target, ...args) {\n    let index = 0;\n    if (isPrimitive(target))\n        target = args[index++];\n    if (!target)\n        target = {};\n    for (; index < args.length; index++) {\n        if (!isObject(args[index]))\n            continue;\n        for (const key in args[index]) {\n            if (!isValidKey(key))\n                continue;\n            if (isObject(target[key]) && isObject(args[index][key])) {\n                assignDeep(target[key], args[index][key]);\n            }\n            else {\n                target[key] = args[index][key];\n            }\n        }\n    }\n    return target;\n}\n//# sourceMappingURL=assignDeep.js.map","import getMaxValue from 'ml-array-max';\nimport { sumOfGaussians } from '../shapes/sumOfGaussians';\nimport { sumOfLorentzians } from '../shapes/sumOfLorentzians';\nimport { sumOfPseudoVoigts } from '../shapes/sumOfPseudoVoigts';\nimport { assignDeep } from './assignDeep';\nlet xObject = {\n    init: (peak) => peak.x,\n    max: (peak) => peak.x + peak.fwhm * 2,\n    min: (peak) => peak.x - peak.fwhm * 2,\n    gradientDifference: (peak) => peak.fwhm * 2e-3,\n};\nlet yObject = {\n    init: (peak) => peak.y,\n    max: () => 1.5,\n    min: () => 0,\n    gradientDifference: () => 1e-3,\n};\nlet fwhmObject = {\n    init: (peak) => peak.fwhm,\n    max: (peak) => peak.fwhm * 4,\n    min: (peak) => peak.fwhm * 0.25,\n    gradientDifference: (peak) => peak.fwhm * 2e-3,\n};\nlet muObject = {\n    init: (peak) => peak.shape && peak.shape.mu !== undefined\n        ? peak.shape.mu\n        : 0.5,\n    min: () => 0,\n    max: () => 1,\n    gradientDifference: () => 0.01,\n};\n/** Algorithm to check the input\n * @param data - Data to check\n * @param peakList - List of peaks\n * @param options - Options for optimization\n */\nexport function checkInput(data, peakList, options) {\n    let { shape = { kind: 'gaussian' }, optimization = {\n        kind: 'lm',\n    }, } = options;\n    let peaks = JSON.parse(JSON.stringify(peakList));\n    let kind = shape.kind.toLowerCase().replace(/[^a-z]/g, '');\n    let paramsFunc;\n    let defaultParameters;\n    switch (kind) {\n        case 'gaussian':\n            paramsFunc = sumOfGaussians;\n            defaultParameters = {\n                x: xObject,\n                y: yObject,\n                fwhm: fwhmObject,\n            };\n            break;\n        case 'lorentzian':\n            paramsFunc = sumOfLorentzians;\n            defaultParameters = {\n                x: xObject,\n                y: yObject,\n                fwhm: fwhmObject,\n            };\n            break;\n        case 'pseudovoigt':\n            paramsFunc = sumOfPseudoVoigts;\n            defaultParameters = {\n                x: xObject,\n                y: yObject,\n                fwhm: fwhmObject,\n                mu: muObject,\n            };\n            break;\n        default:\n            throw new Error('kind of shape is not supported');\n    }\n    let x = data.x;\n    let maxY = getMaxValue(data.y);\n    let y = new Array(x.length);\n    let minY = Number.MAX_VALUE;\n    // we need to move the data down to the baseline 0\n    for (let i = 0; i < x.length; i++) {\n        y[i] = data.y[i];\n        if (data.y[i] < minY) {\n            minY = data.y[i];\n        }\n    }\n    // removing minY from each y, dividing by max\n    for (let i = 0; i < x.length; i++) {\n        y[i] = (y[i] - minY) / maxY;\n    }\n    peaks.forEach((peak) => {\n        peak.y /= maxY;\n        peak.shape = {\n            kind: shape.kind,\n            ...peak.shape,\n        };\n    });\n    let parameters = assignDeep({}, defaultParameters, optimization.parameters);\n    for (let key in parameters) {\n        for (let par in parameters[key]) {\n            if (!Array.isArray(parameters[key][par])) {\n                parameters[key][par] = [parameters[key][par]];\n            }\n            if (![peaks.length, 1].includes(parameters[key][par].length)) {\n                throw new Error(`The length of ${key}-${par} is not correct`);\n            }\n            for (let index = 0; index < parameters[key][par].length; index++) {\n                if (typeof parameters[key][par][index] === 'number') {\n                    let value = parameters[key][par][index];\n                    parameters[key][par][index] = () => value;\n                }\n            }\n        }\n    }\n    optimization.parameters = parameters;\n    return {\n        y,\n        x,\n        maxY,\n        minY,\n        peaks,\n        paramsFunc,\n        optimization,\n    };\n}\n//# sourceMappingURL=checkInput.js.map","import { isAnyArray } from 'is-any-array';\nexport default function checkOptions(data, parameterizedFunction, options) {\n    let { timeout, minValues, maxValues, initialValues, weights = 1, damping = 1e-2, dampingStepUp = 11, dampingStepDown = 9, maxIterations = 100, errorTolerance = 1e-7, centralDifference = false, gradientDifference = 10e-2, improvementThreshold = 1e-3, } = options;\n    if (damping <= 0) {\n        throw new Error('The damping option must be a positive number');\n    }\n    else if (!data.x || !data.y) {\n        throw new Error('The data parameter must have x and y elements');\n    }\n    else if (!isAnyArray(data.x) ||\n        data.x.length < 2 ||\n        !isAnyArray(data.y) ||\n        data.y.length < 2) {\n        throw new Error('The data parameter elements must be an array with more than 2 points');\n    }\n    else if (data.x.length !== data.y.length) {\n        throw new Error('The data parameter elements must have the same size');\n    }\n    let parameters = initialValues || new Array(parameterizedFunction.length).fill(1);\n    let nbPoints = data.y.length;\n    let parLen = parameters.length;\n    maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n    minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n    if (maxValues.length !== minValues.length) {\n        throw new Error('minValues and maxValues must be the same size');\n    }\n    if (!isAnyArray(parameters)) {\n        throw new Error('initialValues must be an array');\n    }\n    if (typeof gradientDifference === 'number') {\n        gradientDifference = new Array(parameters.length).fill(gradientDifference);\n    }\n    else if (isAnyArray(gradientDifference)) {\n        if (gradientDifference.length !== parLen) {\n            gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n        }\n    }\n    else {\n        throw new Error('gradientDifference should be a number or array with length equal to the number of parameters');\n    }\n    let filler;\n    if (typeof weights === 'number') {\n        let value = 1 / weights ** 2;\n        filler = () => value;\n    }\n    else if (isAnyArray(weights)) {\n        if (weights.length < data.x.length) {\n            let value = 1 / weights[0] ** 2;\n            filler = () => value;\n        }\n        else {\n            filler = (i) => 1 / weights[i] ** 2;\n        }\n    }\n    else {\n        throw new Error('weights should be a number or array with length equal to the number of data points');\n    }\n    let checkTimeout;\n    if (timeout !== undefined) {\n        if (typeof timeout !== 'number') {\n            throw new Error('timeout should be a number');\n        }\n        let endTime = Date.now() + timeout * 1000;\n        checkTimeout = () => Date.now() > endTime;\n    }\n    else {\n        checkTimeout = () => false;\n    }\n    let weightSquare = new Array(data.x.length);\n    for (let i = 0; i < nbPoints; i++) {\n        weightSquare[i] = filler(i);\n    }\n    return {\n        checkTimeout,\n        minValues,\n        maxValues,\n        parameters,\n        weightSquare,\n        damping,\n        dampingStepUp,\n        dampingStepDown,\n        maxIterations,\n        errorTolerance,\n        centralDifference,\n        gradientDifference,\n        improvementThreshold,\n    };\n}\n//# sourceMappingURL=checkOptions.js.map","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {ArrayLike<number>} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(data, parameters, parameterizedFunction, weightSquare) {\n    let error = 0;\n    const func = parameterizedFunction(parameters);\n    for (let i = 0; i < data.x.length; i++) {\n        error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n    }\n    return error;\n}\n//# sourceMappingURL=errorCalculation.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\nexport default function gradientFunction(data, evaluatedData, params, gradientDifference, paramFunction, centralDifference) {\n    const nbParams = params.length;\n    const nbPoints = data.x.length;\n    let ans = Matrix.zeros(nbParams, nbPoints);\n    let rowIndex = 0;\n    for (let param = 0; param < nbParams; param++) {\n        if (gradientDifference[param] === 0)\n            continue;\n        let delta = gradientDifference[param];\n        let auxParams = params.slice();\n        auxParams[param] += delta;\n        let funcParam = paramFunction(auxParams);\n        if (!centralDifference) {\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (evaluatedData[point] - funcParam(data.x[point])) / delta);\n            }\n        }\n        else {\n            auxParams = params.slice();\n            auxParams[param] -= delta;\n            delta *= 2;\n            let funcParam2 = paramFunction(auxParams);\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta);\n            }\n        }\n        rowIndex++;\n    }\n    return ans;\n}\n//# sourceMappingURL=gradientFunction.js.map","import { inverse, Matrix } from 'ml-matrix';\nimport gradientFunction from './gradientFunction';\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n    const m = data.x.length;\n    let ans = new Matrix(m, 1);\n    for (let point = 0; point < m; point++) {\n        ans.set(point, 0, data.y[point] - evaluatedData[point]);\n    }\n    return ans;\n}\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n */\nexport default function step(data, params, damping, gradientDifference, parameterizedFunction, centralDifference, weights) {\n    let value = damping;\n    let identity = Matrix.eye(params.length, params.length, value);\n    const func = parameterizedFunction(params);\n    let evaluatedData = new Float64Array(data.x.length);\n    for (let i = 0; i < data.x.length; i++) {\n        evaluatedData[i] = func(data.x[i]);\n    }\n    let gradientFunc = gradientFunction(data, evaluatedData, params, gradientDifference, parameterizedFunction, centralDifference);\n    let residualError = matrixFunction(data, evaluatedData);\n    let inverseMatrix = inverse(identity.add(gradientFunc.mmul(gradientFunc.transpose().scale('row', { scale: weights }))));\n    let jacobianWeightResidualError = gradientFunc.mmul(residualError.scale('row', { scale: weights }));\n    let perturbations = inverseMatrix.mmul(jacobianWeightResidualError);\n    return {\n        perturbations,\n        jacobianWeightResidualError,\n    };\n}\n//# sourceMappingURL=step.js.map","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n/**\n * Curve fitting algorithm\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {object} [options] - Options object\n * @param {number|ArrayLike<number>} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|ArrayLike<number>} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {ArrayLike<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {ArrayLike<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {ArrayLike<number>} [options.initialValues] - Array of initial parameter values\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport function levenbergMarquardt(data, parameterizedFunction, options = {}) {\n    let { checkTimeout, minValues, maxValues, parameters, weightSquare, damping, dampingStepUp, dampingStepDown, maxIterations, errorTolerance, centralDifference, gradientDifference, improvementThreshold, } = checkOptions(data, parameterizedFunction, options);\n    let error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n    let optimalError = error;\n    let optimalParameters = parameters.slice();\n    let converged = error <= errorTolerance;\n    let iteration = 0;\n    for (; iteration < maxIterations && !converged; iteration++) {\n        let previousError = error;\n        let { perturbations, jacobianWeightResidualError } = step(data, parameters, damping, gradientDifference, parameterizedFunction, centralDifference, weightSquare);\n        for (let k = 0; k < parameters.length; k++) {\n            parameters[k] = Math.min(Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)), maxValues[k]);\n        }\n        error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n        if (isNaN(error))\n            break;\n        if (error < optimalError - errorTolerance) {\n            optimalError = error;\n            optimalParameters = parameters.slice();\n        }\n        let improvementMetric = (previousError - error) /\n            perturbations\n                .transpose()\n                .mmul(perturbations.mul(damping).add(jacobianWeightResidualError))\n                .get(0, 0);\n        if (improvementMetric > improvementThreshold) {\n            damping = Math.max(damping / dampingStepDown, 1e-7);\n        }\n        else {\n            damping = Math.min(damping * dampingStepUp, 1e7);\n        }\n        if (checkTimeout()) {\n            throw new Error(`The execution time is over to ${options.timeout} seconds`);\n        }\n        converged = error <= errorTolerance;\n    }\n    return {\n        parameterValues: optimalParameters,\n        parameterError: optimalError,\n        iterations: iteration,\n    };\n}\n//# sourceMappingURL=index.js.map","import { levenbergMarquardt } from 'ml-levenberg-marquardt';\nconst LEVENBERG_MARQUARDT = 1;\n/** Algorithm to select the method.\n * @param optimizationOptions - Optimization options\n * @returns - The algorithm and optimization options\n */\nexport function selectMethod(optimizationOptions = {}) {\n    let { kind, options } = optimizationOptions;\n    kind = getKind(kind);\n    switch (kind) {\n        case LEVENBERG_MARQUARDT:\n            return {\n                algorithm: levenbergMarquardt,\n                optimizationOptions: checkOptions(kind, options),\n            };\n        default:\n            throw new Error(`Unknown kind algorithm`);\n    }\n}\nfunction checkOptions(kind, options = {}) {\n    switch (kind) {\n        case LEVENBERG_MARQUARDT:\n            return Object.assign({}, lmOptions, options);\n        default:\n            throw new Error(`unknown kind: ${kind}`);\n    }\n}\nfunction getKind(kind) {\n    if (typeof kind !== 'string')\n        return kind;\n    switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n        case 'lm':\n        case 'levenbergmarquardt':\n            return LEVENBERG_MARQUARDT;\n        default:\n            throw new Error(`Unknown kind algorithm`);\n    }\n}\nconst lmOptions = {\n    damping: 1.5,\n    maxIterations: 100,\n    errorTolerance: 1e-8,\n};\n//# sourceMappingURL=selectMethod.js.map","import { checkInput } from './util/checkInput';\nimport { selectMethod } from './util/selectMethod';\n/**\n * Fits a set of points to the sum of a set of bell functions.\n *\n * @param data - An object containing the x and y data to be fitted.\n * @param peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param options - Options.\n * @returns - An object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peakList, options = {}) {\n    if (!options.shape) {\n        options = { ...options, ...{ shape: { kind: 'gaussian' } } };\n    }\n    const { y, x, maxY, minY, peaks, paramsFunc, optimization } = checkInput(data, peakList, options);\n    let parameters = optimization.parameters;\n    let nbShapes = peaks.length;\n    let parameterKey = Object.keys(parameters);\n    let nbParams = nbShapes * parameterKey.length;\n    let pMin = new Float64Array(nbParams);\n    let pMax = new Float64Array(nbParams);\n    let pInit = new Float64Array(nbParams);\n    let gradientDifference = new Float64Array(nbParams);\n    for (let i = 0; i < nbShapes; i++) {\n        let peak = peaks[i];\n        for (let k = 0; k < parameterKey.length; k++) {\n            let key = parameterKey[k];\n            let init = parameters[key].init;\n            let min = parameters[key].min;\n            let max = parameters[key].max;\n            let gradientDifferenceValue = parameters[key].gradientDifference;\n            pInit[i + k * nbShapes] = init[i % init.length](peak);\n            pMin[i + k * nbShapes] = min[i % min.length](peak);\n            pMax[i + k * nbShapes] = max[i % max.length](peak);\n            gradientDifference[i + k * nbShapes] =\n                gradientDifferenceValue[i % gradientDifferenceValue.length](peak);\n        }\n    }\n    let { algorithm, optimizationOptions } = selectMethod(optimization);\n    optimizationOptions.minValues = pMin;\n    optimizationOptions.maxValues = pMax;\n    optimizationOptions.initialValues = pInit;\n    optimizationOptions.gradientDifference = gradientDifference;\n    let pFit = algorithm({ x, y }, paramsFunc, optimizationOptions);\n    let { parameterError: error, iterations } = pFit;\n    let result = { error, iterations, peaks };\n    for (let i = 0; i < nbShapes; i++) {\n        for (let k = 0; k < parameterKey.length; k++) {\n            const key = parameterKey[k];\n            const value = pFit.parameterValues[i + k * nbShapes];\n            if (key === 'x' || key === 'fwhm') {\n                peaks[i][key] = value;\n            }\n            else if (key === 'y') {\n                peaks[i][key] = value * maxY + minY;\n            }\n            else {\n                peaks[i].shape[key] = value;\n            }\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=index.js.map","import max from 'ml-array-max';\nimport { optimize as optimizePeak } from 'ml-spectra-fitting';\nimport { xFindClosestIndex } from 'ml-spectra-processing';\n/** Based on a x value we will return a peak\n * if you set optimize=True the returned positions will be\n * the closest actual datapoints to the fitted peak location.\n * the x/y of the fitted peak will be in xOptimized and yOptimized\n */\nexport function peakPicking(spectrum, \n/** value to search (on x axis) */\ntarget, options = {}) {\n    var _a, _b, _c;\n    const { xVariable = 'x', yVariable = 'y', optimize = false, expectedFWHM = 1, max: isMax = true, shapeOptions = {}, } = options;\n    const x = (_a = spectrum.variables[xVariable]) === null || _a === void 0 ? void 0 : _a.data;\n    let y;\n    if (!isMax) {\n        y = (_b = spectrum.variables[yVariable]) === null || _b === void 0 ? void 0 : _b.data.slice(); // do deep copy as we maybe need to flip sign\n    }\n    else {\n        y = (_c = spectrum.variables[yVariable]) === null || _c === void 0 ? void 0 : _c.data;\n    }\n    if (!x || !y)\n        return;\n    let targetIndex;\n    targetIndex = xFindClosestIndex(x, target);\n    let optimizedPeak;\n    let optimizedIndex;\n    const result = {};\n    if (optimize) {\n        if (isMax === false) {\n            let maximumY = max(y);\n            for (let i = 0; i < y.length; i++) {\n                y[i] *= -1;\n                y[i] += maximumY; // This makes it somewhat more robust\n            }\n        }\n        optimizedPeak = optimizePeak({ x, y }, [{ x: x[targetIndex], y: y[targetIndex], fwhm: expectedFWHM }], shapeOptions);\n        optimizedIndex = xFindClosestIndex(x, optimizedPeak.peaks[0].x);\n        for (let [key, variable] of Object.entries(spectrum.variables)) {\n            result[key] = variable.data[optimizedIndex];\n        }\n        result.optimized = optimizedPeak.peaks[0];\n    }\n    else {\n        for (let [key, variable] of Object.entries(spectrum.variables)) {\n            result[key] = variable.data[targetIndex];\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVha1BpY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9wZWFrUGlja2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUsxRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsUUFBa0I7QUFDbEIsa0NBQWtDO0FBQ2xDLE1BQWMsRUFDZCxVQUE4QixFQUFFOztJQUVoQyxNQUFNLEVBQ0osU0FBUyxHQUFHLEdBQUcsRUFDZixTQUFTLEdBQUcsR0FBRyxFQUNmLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFlBQVksR0FBRyxDQUFDLEVBQ2hCLEdBQUcsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUNqQixZQUFZLEdBQUcsRUFBRSxHQUNsQixHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sQ0FBQyxHQUFHLE1BQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMENBQUUsSUFBSSxDQUFDO0lBQzlDLElBQUksQ0FBQyxDQUFDO0lBQ04sSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLENBQUMsR0FBRyxNQUFBLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLDBDQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLDZDQUE2QztLQUMvRjtTQUFNO1FBQ0wsQ0FBQyxHQUFHLE1BQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMENBQUUsSUFBSSxDQUFDO0tBQ3pDO0lBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBRSxPQUFPO0lBQ3JCLElBQUksV0FBVyxDQUFDO0lBQ2hCLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxhQUFhLENBQUM7SUFDbEIsSUFBSSxjQUFjLENBQUM7SUFFbkIsTUFBTSxNQUFNLEdBR1IsRUFBRSxDQUFDO0lBQ1AsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDbkIsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLHFDQUFxQzthQUN4RDtTQUNGO1FBRUQsYUFBYSxHQUFHLFlBQVksQ0FDMUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQ1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFDOUQsWUFBWSxDQUNiLENBQUM7UUFFRixjQUFjLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEUsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsTUFBTSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzNDO1NBQU07UUFDTCxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDMUM7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMifQ==","/**\n * Correction of the x and y coordinates using a quadratic optimizations with the peak and its 3 closest neighbors to determine the true x,y values of the peak.\n * This process is done in place and is very fast.\n * @param data\n * @param peaks\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else {\n            if (y[currentIndex + 1] >= y[currentIndex] &&\n                y[currentIndex + 1] >= y[currentIndex + 2]) {\n                currentIndex++;\n            }\n            else {\n                if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n                    y[currentIndex - 2] >= y[currentIndex - 1]) {\n                    currentIndex -= 2;\n                }\n                else {\n                    if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n                        y[currentIndex + 2] >= y[currentIndex + 3]) {\n                        currentIndex += 2;\n                    }\n                }\n            }\n        }\n        // interpolation to a sin() function\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            let alpha = 20 * Math.log10(y[currentIndex - 1]);\n            let beta = 20 * Math.log10(y[currentIndex]);\n            let gamma = 20 * Math.log10(y[currentIndex + 1]);\n            let p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            peak.x = x[currentIndex] + (x[currentIndex] - x[currentIndex - 1]) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotoneIncreasing, xMinValue, xMaxValue, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { optimizeTop } from './utils/optimizeTop';\n/**\n * Global spectra deconvolution\n * @param  data - Object data with x and y arrays. Values in x has to be growing\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n\n */\nexport function gsd(data, options = {}) {\n    let { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, noiseLevel, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, } = options;\n    let { x, y } = data;\n    if (!xIsMonotoneIncreasing(x)) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    //rescale;\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    let equallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (equallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else {\n        if (maxCriteria === false) {\n            noiseLevel *= -1;\n        }\n    }\n    if (maxCriteria === false) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] *= -1;\n        }\n    }\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    let yData = y;\n    let dY, ddY;\n    const { windowSize, polynomial } = sgOptions;\n    if (equallySpaced) {\n        if (smoothY) {\n            yData = sgg(y, x[1] - x[0], {\n                windowSize,\n                polynomial,\n                derivative: 0,\n            });\n        }\n        dY = sgg(y, x[1] - x[0], {\n            windowSize,\n            polynomial,\n            derivative: 1,\n        });\n        ddY = sgg(y, x[1] - x[0], {\n            windowSize,\n            polynomial,\n            derivative: 2,\n        });\n    }\n    else {\n        if (smoothY) {\n            yData = sgg(y, x, {\n                windowSize,\n                polynomial,\n                derivative: 0,\n            });\n        }\n        dY = sgg(y, x, {\n            windowSize,\n            polynomial,\n            derivative: 1,\n        });\n        ddY = sgg(y, x, {\n            windowSize,\n            polynomial,\n            derivative: 2,\n        });\n    }\n    const minY = xMinValue(yData);\n    const maxY = xMaxValue(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const yThreshold = minY + (maxY - minY) * minMaxRatio;\n    const dX = x[1] - x[0];\n    let lastMax = null;\n    let lastMin = null;\n    let minddY = [];\n    let intervalL = [];\n    let intervalR = [];\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < yData.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    let lastK = -1;\n    const peaks = [];\n    for (const minddYIndex of minddY) {\n        let deltaX = x[minddYIndex];\n        let possible = -1;\n        let k = lastK + 1;\n        let minDistance = Number.POSITIVE_INFINITY;\n        let currentDistance = 0;\n        while (possible === -1 && k < intervalL.length) {\n            currentDistance = Math.abs(deltaX - (intervalL[k].x + intervalR[k].x) / 2);\n            if (currentDistance < (intervalR[k].x - intervalL[k].x) / 2) {\n                possible = k;\n                lastK = k;\n            }\n            ++k;\n            // Not getting closer?\n            if (currentDistance >= minDistance) {\n                break;\n            }\n            minDistance = currentDistance;\n        }\n        if (possible !== -1) {\n            if (yData[minddYIndex] > yThreshold) {\n                let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n                peaks.push({\n                    x: deltaX,\n                    y: yData[minddYIndex],\n                    width: width,\n                    index: minddYIndex,\n                    ddY: ddY[minddYIndex],\n                    inflectionPoints: {\n                        from: intervalL[possible],\n                        to: intervalR[possible],\n                    },\n                });\n            }\n        }\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    peaks.forEach((peak) => {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    });\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","import { gsd } from 'ml-gsd';\nimport { xyMaxClosestYPoint, xyMinClosestYPoint } from 'ml-spectra-processing';\nimport { getNormalizedSpectrum } from './getNormalizedSpectrum';\n/** Based on a x value we will return a peak*/\nexport function autoPeakPicking(spectrum, options = {}) {\n    var _a, _b;\n    const { xVariable = 'x', yVariable = 'y', normalizationOptions, minPeakWidth, } = options;\n    let x = (_a = spectrum.variables[xVariable]) === null || _a === void 0 ? void 0 : _a.data;\n    let y = (_b = spectrum.variables[yVariable]) === null || _b === void 0 ? void 0 : _b.data;\n    if (!x || !y)\n        return [];\n    if (normalizationOptions) {\n        const tempSpectrum = {\n            variables: {\n                x: { data: x, label: '' },\n                y: { data: y, label: '' },\n            },\n        };\n        const normalizedSpectrum = getNormalizedSpectrum(tempSpectrum, normalizationOptions);\n        x = normalizedSpectrum.variables.x.data;\n        y = normalizedSpectrum.variables.y.data;\n    }\n    if (!x || !y)\n        return;\n    let { from, to } = options;\n    let peaks = gsd({ x, y }, options);\n    if (normalizationOptions) {\n        // we need to recalculate the real count\n        const xyClosestYPoint = options.maxCriteria === undefined || options.maxCriteria\n            ? xyMaxClosestYPoint\n            : xyMinClosestYPoint;\n        for (let peak of peaks) {\n            const closest = xyClosestYPoint({ x: spectrum.variables.x.data, y: spectrum.variables.y.data }, { target: peak.x });\n            peak.x = closest.x;\n            peak.y = closest.y;\n        }\n    }\n    if (from !== undefined) {\n        peaks = peaks.filter((peak) => peak.x >= from);\n    }\n    if (to !== undefined) {\n        peaks = peaks.filter((peak) => peak.x <= to);\n    }\n    if (minPeakWidth) {\n        peaks = peaks.filter((peak) => peak.width >= minPeakWidth);\n    }\n    return peaks.map((peak) => {\n        const result = {};\n        for (const [key, variable] of Object.entries(spectrum.variables)) {\n            result[key] = variable.data[peak.index];\n        }\n        result.width = peak.width;\n        return result;\n    });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b1BlYWtQaWNraW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvYXV0b1BlYWtQaWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsOENBQThDO0FBQzlDLE1BQU0sVUFBVSxlQUFlLENBQzdCLFFBQWtCLEVBQ2xCLFVBQWtDLEVBQUU7O0lBRXBDLE1BQU0sRUFDSixTQUFTLEdBQUcsR0FBRyxFQUNmLFNBQVMsR0FBRyxHQUFHLEVBQ2Ysb0JBQW9CLEVBQ3BCLFlBQVksR0FDYixHQUFHLE9BQU8sQ0FBQztJQUVaLElBQUksQ0FBQyxHQUFHLE1BQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMENBQUUsSUFBSSxDQUFDO0lBQzVDLElBQUksQ0FBQyxHQUFHLE1BQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMENBQUUsSUFBSSxDQUFDO0lBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFeEIsSUFBSSxvQkFBb0IsRUFBRTtRQUN4QixNQUFNLFlBQVksR0FBYTtZQUM3QixTQUFTLEVBQUU7Z0JBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUN6QixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7YUFDMUI7U0FDRixDQUFDO1FBQ0YsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FDOUMsWUFBWSxFQUNaLG9CQUFvQixDQUNyQixDQUFDO1FBQ0YsQ0FBQyxH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","import { getJSGraph } from './jsgraph/getJSGraph';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations';\nexport * from './AnalysesManager';\nexport * from './Analysis';\nexport * from './from/fromJcamp';\nexport * from './from/fromText';\nexport * from './to/toJcamp';\nexport * from './to/toJcamps';\nexport * from './to/toText';\nexport * from './util/getNormalizedSpectrum';\nexport * from './util/peakPicking';\nexport * from './util/autoPeakPicking';\nexport * from './types/types';\nexport * from './types/AutoPeakPickingOptions';\nexport * from './types/NormalizedSpectrumOptions';\nexport * from './types/PlotObject';\nexport * from './types/SGOptions';\nexport * from './types/ShapeOptions';\nexport * from './types/SpectrumSelector';\nexport { getReactPlotJSON } from './reactPlot/getReactPlotJSON';\nexport const JSGraph = {\n    getJSGraph,\n    getNormalizationAnnotations,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXBGLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixVQUFVO0lBQ1YsMkJBQTJCO0NBQzVCLENBQUMifQ==","/**\n * @typedef {Object} Peak\n * @property {number} wavenumber\n * @property {number} transmittance\n * @property {number} absorbance\n * @property {number} kind\n * @property {number} assignment\n */\n\n/**\n * Creates annotations for jsgraph that allows to display the result of peak picking\n * @param {array<Peak>} peaks\n * @param {object} [options={}]\n * @param {string} [options.fillColor='green']\n * @param {string} [options.strokeColor='red']\n * @param {string} [options.showKind=true] Display the kind, 'm', 'w', 'S'\n * @param {string} [options.showAssignment=true] Display the assignment\n * @param {function} [options.createFct] (annotation, peak) => {}: callback allowing to add properties\n * @param {string} [options.mode='t100'] 't100'=transmittance in %, 't'=transmittance, 'a'=absorbance\n * @returns array\n */\n\nexport function getAnnotations(peaks, options = {}) {\n  const {\n    fillColor = 'green',\n    strokeColor = 'red',\n    creationFct,\n    mode = 't100',\n  } = options;\n  let annotations = peaks.map((peak) => {\n    let annotation = {\n      line: 1,\n      type: 'rect',\n      strokeColor: strokeColor,\n      strokeWidth: 0,\n      fillColor: fillColor,\n    };\n    if (creationFct) {\n      creationFct(annotation, peak);\n    }\n    switch (mode) {\n      case 'a':\n        annotationAbsorbance(annotation, peak, options);\n        break;\n      case 't':\n        annotationTransmittance(annotation, peak, 1, options);\n        break;\n      case 't100':\n        annotationTransmittance(annotation, peak, 100, options);\n        break;\n      default:\n    }\n    return annotation;\n  });\n  return annotations;\n}\n\nfunction annotationTransmittance(annotation, peak, factor = 1, options = {}) {\n  const { showKind = true, showAssignment = true } = options;\n  let labels = [];\n  let line = 0;\n\n  if (showKind) {\n    labels.push({\n      text: peak.kind,\n      size: '18px',\n      anchor: 'middle',\n      color: 'red',\n      position: {\n        x: peak.wavenumber,\n        y: peak.transmittance * factor,\n        dy: `${23 + line * 14}px`,\n      },\n    });\n    line++;\n  }\n\n  if (showAssignment) {\n    labels.push({\n      text: peak.assignment,\n      size: '18px',\n      anchor: 'middle',\n      color: 'darkred',\n      position: {\n        x: peak.wavenumber,\n        y: peak.transmittance * factor,\n        dy: `${23 + line * 14}px`,\n      },\n    });\n    line++;\n  }\n\n  annotation.labels = labels;\n  annotation.position = [\n    {\n      x: peak.wavenumber,\n      y: peak.transmittance * factor,\n      dy: '10px',\n      dx: '-1px',\n    },\n    {\n      x: peak.wavenumber,\n      y: peak.transmittance * factor,\n      dy: '5px',\n      dx: '1px',\n    },\n  ];\n}\n\nfunction annotationAbsorbance(annotation, peak, options = {}) {\n  const {\n    showKind = true,\n    showAssignment = true,\n    assignmentAngle = -45,\n  } = options;\n  let labels = [];\n  let line = 0;\n\n  if (showKind) {\n    labels.push({\n      text: peak.kind,\n      size: '18px',\n      anchor: 'middle',\n      color: 'red',\n      position: {\n        x: peak.wavenumber,\n        y: peak.absorbance,\n        dy: `${-15 - line * 14}px`,\n      },\n    });\n    line++;\n  }\n\n  if (showAssignment) {\n    labels.push({\n      text: peak.assignment,\n      size: '18px',\n      angle: assignmentAngle,\n      anchor: 'left',\n      color: 'darkred',\n      position: {\n        x: peak.wavenumber,\n        y: peak.absorbance,\n        dy: `${-15 - line * 14}px`,\n      },\n    });\n    line++;\n  }\n\n  annotation.labels = labels;\n\n  annotation.position = [\n    {\n      x: peak.wavenumber,\n      y: peak.absorbance,\n      dy: '-10px',\n      dx: '-1px',\n    },\n    {\n      x: peak.wavenumber,\n      y: peak.absorbance,\n      dy: '-5px',\n      dx: '1px',\n    },\n  ];\n}\n","export function spectrumCallback(variables) {\n  // we add missing absorbance / transmittance\n  // variable a = absorbance\n  // variable t = transmittance\n  let yVariable = variables.y;\n  let absorbance = true;\n  if (yVariable.label.toLowerCase().includes('trans')) {\n    absorbance = false;\n  }\n\n  if (absorbance) {\n    variables.a = { ...yVariable };\n    variables.a.data = variables.a.data.slice();\n    variables.t = {\n      data: yVariable.data.map((absorbance) => 10 ** -absorbance * 100),\n      label: 'Transmittance (%)',\n      units: '',\n    };\n  } else {\n    const factor =\n      yVariable.label.includes('%') ||\n      yVariable.label.toLowerCase().includes('percent')\n        ? 100\n        : 1;\n    variables.a = {\n      data: yVariable.data.map(\n        (transmittance) => -Math.log10(transmittance / factor),\n      ),\n      label: 'Absorbance',\n      units: '',\n    };\n    if (factor === 100) {\n      variables.t = { ...yVariable };\n      variables.t.data = variables.t.data.slice();\n    } else {\n      variables.t = {\n        units: '',\n        label: 'Transmittance (%)',\n        data: yVariable.data.map((transmittance) => transmittance * 100),\n      };\n    }\n  }\n}\n","import { fromJcamp as commonFromJcamp } from 'common-spectrum';\n\nimport { spectrumCallback } from './utils/spectrumCallback';\n\n/**\n * Creates a new Analysis from a SPC buffer\n * @param {ArrayBuffer|string} jcamp\n * @param {object} [options={}]\n * @param {string|number} [options.id=Math.random()]\n * @param {string} [options.label=options.id] human redeable label\n * @param {string} [options.spectrumCallback] a callback to apply on variables when creating spectrum. Default will add a and t\n * @return {Analysis} - New class element with the given data\n */\nexport function fromJcamp(jcamp, options = {}) {\n  return commonFromJcamp(jcamp, { ...options, spectrumCallback });\n}\n","// eslint-disable-next-line import/no-unassigned-import\nimport './text-encoding-polyfill';\nconst decoder = new TextDecoder('utf-8');\nexport function decode(bytes) {\n    return decoder.decode(bytes);\n}\nconst encoder = new TextEncoder();\nexport function encode(str) {\n    return encoder.encode(str);\n}\n//# sourceMappingURL=utf8.browser.js.map","import { decode, encode } from './utf8';\nconst defaultByteLength = 1024 * 8;\nexport class IOBuffer {\n    /**\n     * @param data - The data to construct the IOBuffer with.\n     * If data is a number, it will be the new buffer's length<br>\n     * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n     * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n     * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n     * @param options\n     */\n    constructor(data = defaultByteLength, options = {}) {\n        let dataIsGiven = false;\n        if (typeof data === 'number') {\n            data = new ArrayBuffer(data);\n        }\n        else {\n            dataIsGiven = true;\n            this.lastWrittenByte = data.byteLength;\n        }\n        const offset = options.offset ? options.offset >>> 0 : 0;\n        const byteLength = data.byteLength - offset;\n        let dvOffset = offset;\n        if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n            if (data.byteLength !== data.buffer.byteLength) {\n                dvOffset = data.byteOffset + offset;\n            }\n            data = data.buffer;\n        }\n        if (dataIsGiven) {\n            this.lastWrittenByte = byteLength;\n        }\n        else {\n            this.lastWrittenByte = 0;\n        }\n        this.buffer = data;\n        this.length = byteLength;\n        this.byteLength = byteLength;\n        this.byteOffset = dvOffset;\n        this.offset = 0;\n        this.littleEndian = true;\n        this._data = new DataView(this.buffer, dvOffset, byteLength);\n        this._mark = 0;\n        this._marks = [];\n    }\n    /**\n     * Checks if the memory allocated to the buffer is sufficient to store more\n     * bytes after the offset.\n     * @param byteLength - The needed memory in bytes.\n     * @returns `true` if there is sufficient space and `false` otherwise.\n     */\n    available(byteLength = 1) {\n        return this.offset + byteLength <= this.length;\n    }\n    /**\n     * Check if little-endian mode is used for reading and writing multi-byte\n     * values.\n     * @returns `true` if little-endian mode is used, `false` otherwise.\n     */\n    isLittleEndian() {\n        return this.littleEndian;\n    }\n    /**\n     * Set little-endian mode for reading and writing multi-byte values.\n     */\n    setLittleEndian() {\n        this.littleEndian = true;\n        return this;\n    }\n    /**\n     * Check if big-endian mode is used for reading and writing multi-byte values.\n     * @returns `true` if big-endian mode is used, `false` otherwise.\n     */\n    isBigEndian() {\n        return !this.littleEndian;\n    }\n    /**\n     * Switches to big-endian mode for reading and writing multi-byte values.\n     */\n    setBigEndian() {\n        this.littleEndian = false;\n        return this;\n    }\n    /**\n     * Move the pointer n bytes forward.\n     * @param n - Number of bytes to skip.\n     */\n    skip(n = 1) {\n        this.offset += n;\n        return this;\n    }\n    /**\n     * Move the pointer to the given offset.\n     * @param offset\n     */\n    seek(offset) {\n        this.offset = offset;\n        return this;\n    }\n    /**\n     * Store the current pointer offset.\n     * @see {@link IOBuffer#reset}\n     */\n    mark() {\n        this._mark = this.offset;\n        return this;\n    }\n    /**\n     * Move the pointer back to the last pointer offset set by mark.\n     * @see {@link IOBuffer#mark}\n     */\n    reset() {\n        this.offset = this._mark;\n        return this;\n    }\n    /**\n     * Push the current pointer offset to the mark stack.\n     * @see {@link IOBuffer#popMark}\n     */\n    pushMark() {\n        this._marks.push(this.offset);\n        return this;\n    }\n    /**\n     * Pop the last pointer offset from the mark stack, and set the current\n     * pointer offset to the popped value.\n     * @see {@link IOBuffer#pushMark}\n     */\n    popMark() {\n        const offset = this._marks.pop();\n        if (offset === undefined) {\n            throw new Error('Mark stack empty');\n        }\n        this.seek(offset);\n        return this;\n    }\n    /**\n     * Move the pointer offset back to 0.\n     */\n    rewind() {\n        this.offset = 0;\n        return this;\n    }\n    /**\n     * Make sure the buffer has sufficient memory to write a given byteLength at\n     * the current pointer offset.\n     * If the buffer's memory is insufficient, this method will create a new\n     * buffer (a copy) with a length that is twice (byteLength + current offset).\n     * @param byteLength\n     */\n    ensureAvailable(byteLength = 1) {\n        if (!this.available(byteLength)) {\n            const lengthNeeded = this.offset + byteLength;\n            const newLength = lengthNeeded * 2;\n            const newArray = new Uint8Array(newLength);\n            newArray.set(new Uint8Array(this.buffer));\n            this.buffer = newArray.buffer;\n            this.length = this.byteLength = newLength;\n            this._data = new DataView(this.buffer);\n        }\n        return this;\n    }\n    /**\n     * Read a byte and return false if the byte's value is 0, or true otherwise.\n     * Moves pointer forward by one byte.\n     */\n    readBoolean() {\n        return this.readUint8() !== 0;\n    }\n    /**\n     * Read a signed 8-bit integer and move pointer forward by 1 byte.\n     */\n    readInt8() {\n        return this._data.getInt8(this.offset++);\n    }\n    /**\n     * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n     */\n    readUint8() {\n        return this._data.getUint8(this.offset++);\n    }\n    /**\n     * Alias for {@link IOBuffer#readUint8}.\n     */\n    readByte() {\n        return this.readUint8();\n    }\n    /**\n     * Read `n` bytes and move pointer forward by `n` bytes.\n     */\n    readBytes(n = 1) {\n        const bytes = new Uint8Array(n);\n        for (let i = 0; i < n; i++) {\n            bytes[i] = this.readByte();\n        }\n        return bytes;\n    }\n    /**\n     * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n     */\n    readInt16() {\n        const value = this._data.getInt16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n     */\n    readUint16() {\n        const value = this._data.getUint16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n     */\n    readInt32() {\n        const value = this._data.getInt32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n     */\n    readUint32() {\n        const value = this._data.getUint32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit floating number and move pointer forward by 4 bytes.\n     */\n    readFloat32() {\n        const value = this._data.getFloat32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 64-bit floating number and move pointer forward by 8 bytes.\n     */\n    readFloat64() {\n        const value = this._data.getFloat64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 64-bit signed integer number and move pointer forward by 8 bytes.\n     */\n    readBigInt64() {\n        const value = this._data.getBigInt64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 64-bit unsigned integer number and move pointer forward by 8 bytes.\n     */\n    readBigUint64() {\n        const value = this._data.getBigUint64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n     */\n    readChar() {\n        return String.fromCharCode(this.readInt8());\n    }\n    /**\n     * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n     */\n    readChars(n = 1) {\n        let result = '';\n        for (let i = 0; i < n; i++) {\n            result += this.readChar();\n        }\n        return result;\n    }\n    /**\n     * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n     * forward by `n` bytes.\n     */\n    readUtf8(n = 1) {\n        return decode(this.readBytes(n));\n    }\n    /**\n     * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n     * forward by 1 byte.\n     */\n    writeBoolean(value) {\n        this.writeUint8(value ? 0xff : 0x00);\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n     */\n    writeInt8(value) {\n        this.ensureAvailable(1);\n        this._data.setInt8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n     * byte.\n     */\n    writeUint8(value) {\n        this.ensureAvailable(1);\n        this._data.setUint8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * An alias for {@link IOBuffer#writeUint8}.\n     */\n    writeByte(value) {\n        return this.writeUint8(value);\n    }\n    /**\n     * Write all elements of `bytes` as uint8 values and move pointer forward by\n     * `bytes.length` bytes.\n     */\n    writeBytes(bytes) {\n        this.ensureAvailable(bytes.length);\n        for (let i = 0; i < bytes.length; i++) {\n            this._data.setUint8(this.offset++, bytes[i]);\n        }\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit signed integer and move pointer forward by 2\n     * bytes.\n     */\n    writeInt16(value) {\n        this.ensureAvailable(2);\n        this._data.setInt16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n     * bytes.\n     */\n    writeUint16(value) {\n        this.ensureAvailable(2);\n        this._data.setUint16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit signed integer and move pointer forward by 4\n     * bytes.\n     */\n    writeInt32(value) {\n        this.ensureAvailable(4);\n        this._data.setInt32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n     * bytes.\n     */\n    writeUint32(value) {\n        this.ensureAvailable(4);\n        this._data.setUint32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit floating number and move pointer forward by 4\n     * bytes.\n     */\n    writeFloat32(value) {\n        this.ensureAvailable(4);\n        this._data.setFloat32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit floating number and move pointer forward by 8\n     * bytes.\n     */\n    writeFloat64(value) {\n        this.ensureAvailable(8);\n        this._data.setFloat64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit signed bigint and move pointer forward by 8\n     * bytes.\n     */\n    writeBigInt64(value) {\n        this.ensureAvailable(8);\n        this._data.setBigInt64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit unsigned bigint and move pointer forward by 8\n     * bytes.\n     */\n    writeBigUint64(value) {\n        this.ensureAvailable(8);\n        this._data.setBigUint64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n     * and move pointer forward by 1 byte.\n     */\n    writeChar(str) {\n        return this.writeUint8(str.charCodeAt(0));\n    }\n    /**\n     * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n     * and move pointer forward by `str.length` bytes.\n     */\n    writeChars(str) {\n        for (let i = 0; i < str.length; i++) {\n            this.writeUint8(str.charCodeAt(i));\n        }\n        return this;\n    }\n    /**\n     * UTF-8 encode and write `str` to the current pointer offset and move pointer\n     * forward according to the encoded length.\n     */\n    writeUtf8(str) {\n        return this.writeBytes(encode(str));\n    }\n    /**\n     * Export a Uint8Array view of the internal buffer.\n     * The view starts at the byte offset and its length\n     * is calculated to stop at the last written byte or the original length.\n     */\n    toArray() {\n        return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n    }\n    /**\n     * Update the last written byte offset\n     * @private\n     */\n    _updateLastWrittenByte() {\n        if (this.offset > this.lastWrittenByte) {\n            this.lastWrittenByte = this.offset;\n        }\n    }\n}\n//# sourceMappingURL=IOBuffer.js.map","/**\n * Gets the parameter in each bit of the flag\n * @param {number} flag First byte of the main header\n * @returns {object} The parameters\n */\nexport function getFlagParameters(flag) {\n  const parameters = {}; //Z is time\n  parameters.y16BitPrecision = (flag & 1) !== 0; //Y values are 16 bits instead of 32\n  parameters.useExperimentExtension = (flag & 2) !== 0; //Enable experiment mode\n  parameters.multiFile = (flag & 4) !== 0; //Multiple spectra\n  parameters.zValuesRandom = (flag & 8) !== 0; //Z values in random order if multiFile\n  parameters.zValuesUneven = (flag & 16) !== 0; //Z values ordered but unevenly spaced if multi\n  parameters.customAxisLabels = (flag & 32) !== 0; //Custom labels\n  parameters.xyxy = (flag & 64) !== 0; //One X array per subfile, for discontinuous curves\n  parameters.xy = (flag & 128) !== 0; // Non-evenly spaced X, X before Y\n  return parameters;\n}\n\n/**\n *\n * Gets the Subfile flags\n * @param {number} flag First byte of the subheader\n * @return {object} The parameters\n */\nexport function getSubFlagParameters(flag) {\n  const parameters = {};\n  parameters.changed = (flag & 1) !== 0;\n  parameters.noPeakTable = (flag & 8) !== 0;\n  parameters.modifiedArithmetic = (flag & 128) !== 0;\n  return parameters;\n}\n\n/**\n * Generates an array of evenly spaced numbers\n * @param {number} minimum Lower bound\n * @param {number} maximum Upper bound\n * @param {number} numberPoints Number of points\n * @return {array} Evenly spaced numbers\n */\nexport function equidistantArray(minimum, maximum, numberPoints) {\n  const equidistantArray = new Float64Array(numberPoints);\n  const step = (maximum - minimum) / (numberPoints - 1);\n  for (let i = 0; i < numberPoints; i++) {\n    equidistantArray[i] = minimum + i * step;\n  }\n  return equidistantArray;\n}\n\n/**\n * Gets the date encoded in binary in a long number\n * @param {number} long Binary date\n * @return {string} Date formatted to ISO 8601:2019 convention\n */\nexport function longToDate(long) {\n  if (long === 0) {\n    return '0000-00-00T00:00:00.00Z';\n  }\n  const date = new Date();\n  date.setUTCFullYear(long >> 20);\n  date.setUTCMonth(((long >> 16) & 0x0f) - 1);\n  date.setUTCDate((long >> 11) & 0x1f);\n  date.setUTCHours((long >> 6) & 0x1f);\n  date.setUTCMinutes(long & 0x3f);\n  date.setUTCSeconds(0);\n  date.setUTCMilliseconds(0);\n  return date.toISOString();\n}\n","/* eslint-disable no-control-regex */\nimport { equidistantArray, getSubFlagParameters } from './utility';\n\n/**\n * Parses the subheader of the current subfile\n *\n * @export\n * @param {object} buffer SPC buffer\n * @return {object} Current subfile's subheader\n */\nexport function subHeader(buffer) {\n  const subHeader = {};\n  subHeader.parameters = getSubFlagParameters(buffer.readUint8());\n  subHeader.exponentY = buffer.readInt8();\n  subHeader.indexNumber = buffer.readUint16();\n  subHeader.startingZ = buffer.readFloat32();\n  subHeader.endingZ = buffer.readFloat32();\n  subHeader.noiseValue = buffer.readFloat32();\n  subHeader.numberPoints = buffer.readUint32();\n  subHeader.numberCoAddedScans = buffer.readUint32();\n  subHeader.wAxisValue = buffer.readFloat32();\n  subHeader.reserved = buffer.readChars(4).trim().replace(/\\x00/g, '');\n  return subHeader;\n}\n\n/**\n * Reads the data block of the SPC file\n *\n * @export\n * @param {object} buffer spc buffer\n * @param {object} mainHeader main header\n * @return {array} Array containing the spectra\n */\nexport function readDataBlock(buffer, mainHeader) {\n  let x;\n  let y;\n  let spectra = [];\n\n  if (!mainHeader.parameters.xyxy && mainHeader.xy) {\n    x = new Float32Array(mainHeader.numberPoints);\n    for (let i = 0; i < mainHeader.numberPoints; i++) {\n      x[i] = buffer.readFloat32();\n    }\n  } else if (!mainHeader.parameters.xy) {\n    x = equidistantArray(\n      mainHeader.startingX,\n      mainHeader.endingX,\n      mainHeader.numberPoints,\n    );\n  }\n  let spectrum;\n  for (\n    let i = 0;\n    i < mainHeader.spectra ||\n    (mainHeader.fileVersion === 0x4d &&\n      buffer.offset + mainHeader.numberPoints < buffer.length);\n    i++\n  ) {\n    spectrum = {};\n    spectrum.meta = subHeader(buffer);\n    if (mainHeader.parameters.xyxy) {\n      x = new Float32Array(spectrum.meta.numberPoints);\n      for (let j = 0; j < spectrum.meta.numberPoints; j++) {\n        x[j] = buffer.readFloat32();\n      }\n    }\n    if (spectrum.meta.exponentY === 0) {\n      spectrum.meta.exponentY = mainHeader.exponentY;\n    }\n    const yFactor = Math.pow(\n      2,\n      spectrum.meta.exponentY -\n        (mainHeader.parameters.y16BitPrecision ? 16 : 32),\n    );\n\n    const nbPoints = spectrum.meta.numberPoints\n      ? spectrum.meta.numberPoints\n      : mainHeader.numberPoints;\n\n    if (mainHeader.parameters.y16BitPrecision) {\n      y = new Float32Array(nbPoints);\n      for (let j = 0; j < nbPoints; j++) {\n        y[j] = buffer.readInt16() * yFactor;\n      }\n    } else {\n      y = new Float32Array(nbPoints);\n      for (let j = 0; j < nbPoints; j++) {\n        if (mainHeader.fileVersion === 0x4d) {\n          y[j] =\n            ((buffer.readUint8() << 16) +\n              (buffer.readInt8() << 24) +\n              (buffer.readUint8() << 0) +\n              (buffer.readUint8() << 8)) *\n            yFactor;\n        } else {\n          if (spectrum.meta.exponentY !== -128) {\n            y[j] = buffer.readInt32() * yFactor;\n          } else {\n            y[j] = buffer.readFloat32();\n          }\n        }\n      }\n    }\n    const xAxis = mainHeader.xUnitsType.match(\n      /(?<label>.*?) ?[([](?<units>.*)[)\\]]/,\n    );\n    const yAxis = mainHeader.yUnitsType.match(\n      /(?<label>.*?) ?[([](?<units>.*)[)\\]]/,\n    );\n    const variables = {\n      x: {\n        symbol: 'x',\n        label: (xAxis && xAxis.groups.label) || mainHeader.xUnitsType,\n        units: (xAxis && xAxis.groups.units) || '',\n        data: x,\n        type: 'INDEPENDENT',\n      },\n      y: {\n        symbol: 'y',\n        label: (yAxis && yAxis.groups.label) || mainHeader.yUnitsType,\n        units: (yAxis && yAxis.groups.units) || '',\n        data: y,\n        type: 'DEPENDENT',\n      },\n    };\n    spectrum.variables = variables;\n    spectra.push(spectrum);\n  }\n  return spectra;\n}\n","/* eslint-disable no-control-regex */\n/**\n *\n * @param {object} buffer SPC buffer\n * @param {number} logOffset Offset of the log (from mainHeader)\n * @return {object} Object containing log meta, data and text\n */\nexport function readLogBlock(buffer, logOffset) {\n  const logHeader = {};\n  logHeader.size = buffer.readUint32(); //Size of the block in bytes\n  logHeader.memorySize = buffer.readUint32(); //Size of the memory rounded up to nearest multiple of 4096\n  logHeader.textOffset = buffer.readUint32(); //Offset to Text section\n  logHeader.binarySize = buffer.readUint32(); //Size of binary log block\n  logHeader.diskArea = buffer.readUint32(); //Size of the disk area\n  logHeader.reserved = buffer.readChars(44).trim().replace(/\\x00/g, ''); //Reserved space\n  const logData = buffer.readChars(logHeader.binarySize);\n  buffer.offset = logOffset + logHeader.textOffset;\n  const logASCII = buffer\n    .readChars(logHeader.size - logHeader.textOffset)\n    .trim()\n    .replace(/\\x00/g, '');\n  return { meta: logHeader, data: logData, text: logASCII };\n}\n","/**\n * Gives meaning to type codes\n * @param {number} xzwType x, z or w type code\n * @return {string} String corresponding to the code\n */\nexport function xzwTypes(xzwType) {\n  switch (xzwType) {\n    case 1:\n      return 'Wavenumber (cm-1)';\n    case 2:\n      return 'Micrometers (um)';\n    case 3:\n      return 'Nanometers (nm)';\n    case 4:\n      return 'Seconds';\n    case 5:\n      return 'Minutes';\n    case 6:\n      return 'Hertz (Hz)';\n    case 7:\n      return 'Kilohertz (KHz)';\n    case 8:\n      return 'Megahertz (MHz)';\n    case 9:\n      return 'Mass (M/z)';\n    case 10:\n      return 'Parts per million (PPM)';\n    case 11:\n      return 'Days';\n    case 12:\n      return 'Years';\n    case 13:\n      return 'Raman Shift (cm-1)';\n    case 14:\n      return 'eV';\n    case 15:\n      return 0;\n    case 16:\n      return 'Diode Number';\n    case 17:\n      return 'Channel ';\n    case 18:\n      return 'Degrees';\n    case 19:\n      return 'Temperature (F)';\n    case 20:\n      return 'Temperature (C)';\n    case 21:\n      return 'Temperature (K)';\n    case 22:\n      return 'Data Points';\n    case 23:\n      return 'Milliseconds (mSec)';\n    case 24:\n      return 'Microseconds (uSec)';\n    case 25:\n      return 'Nanoseconds (nSec)';\n    case 26:\n      return 'Gigahertz (GHz)';\n    case 27:\n      return 'Centimeters (cm)';\n    case 28:\n      return 'Meters (m)';\n    case 29:\n      return 'Millimeters (mm)';\n    case 30:\n      return 'Hours';\n    case 255:\n      return 'Double interferogram';\n    default:\n      return 'Arbitrary';\n  }\n}\n/**\n * Gives meaning to y type codes\n * @param {number} yType y type code\n * @return {string} String corresponding to the code\n */\nexport function yTypes(yType) {\n  switch (yType) {\n    case 0:\n      return 'Arbitrary Intensity';\n    case 1:\n      return 'Interferogram';\n    case 2:\n      return 'Absorbance';\n    case 3:\n      return 'Kubelka-Monk';\n    case 4:\n      return 'Counts';\n    case 5:\n      return 'Volts';\n    case 6:\n      return 'Degrees';\n    case 7:\n      return 'Milliamps';\n    case 8:\n      return 'Millimeters';\n    case 9:\n      return 'Millivolts';\n    case 10:\n      return 'Log(1/R)';\n    case 11:\n      return 'Percent';\n    case 12:\n      return 'Intensity';\n    case 13:\n      return 'Relative Intensity';\n    case 14:\n      return 'Energy';\n    case 16:\n      return 'Decibel';\n    case 19:\n      return 'Temperature (F)';\n    case 20:\n      return 'Temperature (C)';\n    case 21:\n      return 'Temperature (K)';\n    case 22:\n      return 'Index of Refraction [N]';\n    case 23:\n      return 'Extinction Coeff. [K]';\n    case 24:\n      return 'Real';\n    case 25:\n      return 'Imaginary';\n    case 26:\n      return 'Complex';\n    case 128:\n      return 'Transmission';\n    case 129:\n      return 'Reflectance';\n    case 130:\n      return 'Arbitrary or Single Beam with Valley Peaks';\n    case 131:\n      return 'Emission';\n    default:\n      return 'Reference Arbitrary Energy';\n  }\n}\n\n/**\n * Experiment settings code converter\n * @param {number} code\n * @return {string}\n */\nexport function experimentSettings(code) {\n  switch (code) {\n    case 1:\n      return 'Gas Chromatogram';\n    case 2:\n      return 'General Chromatogram (same as SPCGEN with TCGRAM)';\n    case 3:\n      return 'HPLC Chromatogram';\n    case 4:\n      return 'FT-IR, FT-NIR, FT-Raman Spectrum or Igram (Can also be used for scanning IR.)';\n    case 5:\n      return 'NIR Spectrum (Usually multi-spectral data sets for calibration.)';\n    case 7:\n      return 'UV-VIS Spectrum (Can be used for single scanning UV-VIS-NIR.)';\n    case 8:\n      return 'X-ray Diffraction Spectrum';\n    case 9:\n      return 'Mass Spectrum  (Can be single, GC-MS, Continuum, Centroid or TOF.)';\n    case 10:\n      return 'NMR Spectrum or FID';\n    case 11:\n      return 'Raman Spectrum (Usually Diode Array, CCD, etc. use SPCFTIR for FT-Raman.)';\n    case 12:\n      return 'Fluorescence Spectrum';\n    case 13:\n      return 'Atomic Spectrum';\n    case 14:\n      return 'Chromatography Diode Array Spectra';\n    default:\n      return 'General SPC (could be anything)';\n  }\n}\n","/* eslint-disable no-control-regex */\nimport { xzwTypes, yTypes, experimentSettings } from './types';\nimport { getFlagParameters, longToDate } from './utility';\n\n/**\n * Main header parsing - First 512/256 bytes (new/old format)\n * @param {object} buffer SPC buffer\n * @return {object} Main header\n */\nexport function mainHeader(buffer) {\n  const header = {};\n  header.parameters = getFlagParameters(buffer.readUint8()); //Each bit contains a parameter\n  header.fileVersion = buffer.readUint8(); //4B => New format; 4D => LabCalc format\n  switch (header.fileVersion) {\n    case 0x4b: // new format\n      break;\n    case 0x4c:\n      buffer.setBigEndian();\n      break;\n    case 0x4d: // old LabCalc format\n      return oldHeader(buffer, header);\n    default:\n      throw new Error(\n        'Unrecognized file format: byte 01 must be either 4B, 4C or 4D',\n      );\n  }\n\n  header.experimentType = experimentSettings(buffer.readUint8()); //Experiment type code (See SPC.h)\n  header.exponentY = buffer.readInt8(); //Exponent for Y values (80h = floating point): FloatY = (2^Exp)*IntY/(2^32) 32-bit; FloatY = (2^Exp)*IntY/(2^16) 32-bit\n  header.numberPoints = buffer.readUint32(); //Number of points (if not XYXY)\n  header.startingX = buffer.readFloat64(); //First X coordinate\n  header.endingX = buffer.readFloat64(); //Last X coordinate\n  header.spectra = buffer.readUint32(); //Number of spectrums\n  header.xUnitsType = xzwTypes(buffer.readUint8()); //X Units type code (See types.js)\n\n  header.yUnitsType = yTypes(buffer.readUint8()); //Y \"\"\n  header.zUnitsType = xzwTypes(buffer.readUint8()); //Z \"\"\n  header.postingDisposition = buffer.readUint8(); //Posting disposition (See GRAMSDDE.H)\n  header.date = longToDate(buffer.readUint32()); //Date: minutes = first 6 bits, hours = 5 next bits, days = 5 next, months = 4 next, years = 12 last\n  header.resolutionDescription = buffer\n    .readChars(9)\n    .trim()\n    .replace(/\\x00/g, ''); //Resolution description text\n  header.sourceInstrumentDescription = buffer\n    .readChars(9)\n    .trim()\n    .replace(/\\x00/g, ''); // Source Instrument description text\n  header.peakPointNumber = buffer.readUint16(); //Peak point number for interferograms\n  header.spare = [];\n  for (let i = 0; i < 8; i++) {\n    header.spare.push(buffer.readFloat32());\n  }\n  if (header.fileVersion === 0x4c) {\n    //Untested case because no test files\n    header.spare.reverse();\n  }\n  header.memo = buffer.readChars(130).trim().replace(/\\x00/g, '');\n  header.xyzLabels = buffer.readChars(30).trim().replace(/\\x00/g, '');\n  header.logOffset = buffer.readUint32(); //Byte offset to Log Block\n  header.modifiedFlag = buffer.readUint32(); //File modification flag (See values in SPC.H)\n  header.processingCode = buffer.readUint8(); //Processing code (See GRAMSDDE.H)\n  header.calibrationLevel = buffer.readUint8(); //Calibration level + 1\n  header.subMethodSampleInjectionNumber = buffer.readUint16(); //Sub-method sample injection number\n  header.concentrationFactor = buffer.readFloat32(); //Floating data multiplier concentration factor\n  header.methodFile = buffer.readChars(48).trim().replace(/\\x00/g, ''); //Method file\n  header.zSubIncrement = buffer.readFloat32(); //Z subfile increment for even Z Multifiles\n  header.wPlanes = buffer.readUint32();\n  header.wPlaneIncrement = buffer.readFloat32();\n  header.wAxisUnits = xzwTypes(buffer.readUint8()); //W axis units code\n  header.reserved = buffer.readChars(187).trim().replace(/\\x00/g, ''); //Reserved space (Must be zero)\n  if (header.xUnitsType === 0) {\n    header.xUnitsType = header.xyzLabels.substr(0, 10);\n  }\n  if (header.zUnitsType === 0) {\n    header.zUnitsType = header.xyzLabels.substr(20, 10);\n  }\n  return header;\n}\n\n/**\n *Old version files header parsing\n *\n * @export\n * @param {object} buffer SPC buffer\n * @param {object} header Header from the previous function\n * @return {object} Object containing the metadata of the old file\n */\nexport function oldHeader(buffer, header) {\n  header.exponentY = buffer.readInt16(); //Word (16 bits) instead of byte\n  header.numberPoints = buffer.readFloat32();\n  header.startingX = buffer.readFloat32();\n  header.endingX = buffer.readFloat32();\n  header.xUnitsType = xzwTypes(buffer.readUint8());\n  header.yUnitsType = yTypes(buffer.readUint8());\n  const date = new Date();\n  const zTypeYear = buffer.readUint16(); //Unrelated to Z axis\n  date.setUTCFullYear(zTypeYear % 4096); // todo might be wrong\n  date.setUTCMonth(Math.max(buffer.readUint8() - 1, 0));\n  date.setUTCDate(buffer.readUint8());\n  date.setUTCHours(buffer.readUint8());\n  date.setUTCMinutes(buffer.readUint8());\n  header.date = date.toISOString();\n  header.resolutionDescription = buffer\n    .readChars(8)\n    .trim()\n    .replace(/\\x00/g, '');\n  header.peakPointNumber = buffer.readUint16();\n  header.scans = buffer.readUint16();\n  header.spare = [];\n  for (let i = 0; i < 7; i++) {\n    header.spare.push(buffer.readFloat32());\n  }\n  header.memo = buffer.readChars(130).trim().replace(/\\x00/g, '');\n  header.xyzLabels = buffer.readChars(30).trim().replace(/\\x00/g, '');\n  return header;\n}\n","import { IOBuffer } from 'iobuffer';\n\nimport { readDataBlock } from './dataBlock';\nimport { readLogBlock } from './logBlock';\nimport { mainHeader } from './mainHeader';\n/**\n * Parses an SPC file\n *\n * @param {object} buffer SPC file buffer\n * @return {object} Object containing every information contained in the SPC file\n */\nexport function parse(buffer) {\n  const ioBuffer = new IOBuffer(buffer);\n  const meta = mainHeader(ioBuffer);\n  const spectra = readDataBlock(ioBuffer, meta);\n  if (meta.logOffset && meta.logOffset !== 0) {\n    return { meta, spectra, logs: readLogBlock(ioBuffer, meta.logOffset) };\n  }\n  return { meta, spectra };\n}\n","import { Analysis } from 'common-spectrum';\nimport { parse } from 'spc-parser';\n\nimport { spectrumCallback } from './utils/spectrumCallback';\n\n/**\n * Creates a new Analysis from a SPC buffer\n * @param {ArrayBuffer} buffer\n * @param {object} [options={}]\n * @param {object} [options.id=Math.random()]\n * @param {string} [options.label=options.id] human redeable label\n * @param {string} [options.spectrumCallback] a callback to apply on variables when creating spectrum. Default will add a and t\n * @return {Analysis} - New class element with the given data\n */\n\nexport function fromSPC(buffer, options = {}) {\n  let analysis = new Analysis({ ...options, spectrumCallback });\n  let result = parse(buffer);\n\n  if (result.meta) delete result.meta.parameters;\n\n  for (let spectrum of result.spectra) {\n    if (spectrum.meta) delete spectrum.meta.parameters;\n    analysis.pushSpectrum(spectrum.variables, {\n      dataType: 'IR SPECTRUM',\n      title: '',\n      meta: { ...result.meta, ...spectrum.meta },\n    });\n  }\n  return analysis;\n}\n","import { JSGraph as OriginalJSGraph } from 'common-spectrum';\n\nimport { getAnnotations } from './jsgraph/getAnnotations';\n\nexport {\n  Analysis,\n  AnalysesManager,\n  toJcamp,\n  peakPicking,\n  autoPeakPicking,\n} from 'common-spectrum';\n\nexport { fromJcamp } from './from/fromJcamp';\nexport { fromSPC } from './from/fromSPC';\n\nexport const JSGraph = { ...OriginalJSGraph, getAnnotations };\n"],"names":["createFromToArray","options","from","to","length","includeFrom","includeTo","distribution","array","Float64Array","div","delta","index","base","firstExponent","Math","log","Error","toString","Object","prototype","isAnyArray","value","call","endsWith","a","d","e","f","g","h","i","j","c","b","_ref","module","exports","window","median","xMedian","input","TypeError","quickSelectMedian","slice","getOutputArray","output","undefined","xCheck","xDivide","array1","array2","isConstant","constant","Number","array3","xEnsureFloat64","xFindClosestIndex","target","sorted","low","high","middle","abs","diff","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","xMaxValue","maxValue","xMinValue","minValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotone","xIsMonotoneIncreasing","xMean","sumValue","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","min","max","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","toLowerCase","absoluteSumValue","absoluteSum","currentMaxValue","factor","sumFactor","xVariance","values","unbiased","mean","sqrError","xStandardDeviation","sqrt","xRescale","currentMin","currentMax","RangeError","xyCheck","data","minLength","y","xyEnsureGrowingX","Array","prevX","NEGATIVE_INFINITY","currentIndex","zonesNormalize","zones","exclusions","JSON","parse","stringify","map","zone","sort","push","forEach","filter","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","results","counter","zoneIndex","zonesWithPoints","numberOfPoints","returnZones","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","round","equallySpacedSlot","xLength","step","halfStep","lastStep","start","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x0","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","getSlope","y0","y1","add","xyEquallySpaced","variant","normalizedZones","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyFilterXPositive","xyMaxClosestYPoint","targetIndex","previousIndex","xyMaxY","xyMinClosestYPoint","minY","matrixCheck","firstLength","matrixMinMaxZ","matrix","nbRows","nbColumns","column","row","arguments","_options$fromIndex","_options$toIndex","isInteger","rescale","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","constructor","name","inspectData","rows","columns","maxI","maxJ","result","line","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","exp","expm1","floor","fround","log1p","log10","log2","sign","sin","sinh","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","tmp","reducedEchelonForm","m","n","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","r","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","product","standardDeviation","center","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","BaseView","MatrixTransposeView","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","isNaN","ks","cs","sn","sp","spm1","epm1","sk","ek","shift","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","addStyle","serie","spectrum","color","opacity","lineWidth","match","toUpperCase","replace","style","width","dash","label","id","COLORS","getJSGraph","analyses","colors","opacities","linesWidth","selector","normalization","xAxis","yAxis","series","xLabel","yLabel","xUnits","units","yUnits","analysis","currentData","getNormalizedSpectrum","variables","logScale","axes","unit","unitWrapperBefore","unitWrapperAfter","flipped","display","getNormalizationAnnotations","boundary","annotations","exclusion","ignore","annotation","strokeWidth","fillColor","appendDistinctParameter","key","includes","appendDistinctValue","AnalysesManager","addAnalysis","getAnalysisIndex","getAnalyses","ids","getSpectra","spectra","getDistinctTitles","title","keys","getDistinctUnits","variable","entries","_a","getDistinctLabels","getDistinctDataTypes","dataType","getDistinctMeta","meta","removeAllAnalyses","removeAnalysis","centerMean","centerMedian","fromTo","subarray","normed","divideBySD","ldlSymbolic","Ap","Ai","Lp","Parent","Lnz","Flag","kk","p2","ldlNumeric","Ax","Li","Lx","D","Pattern","yi","lKi","len","top","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPerm","B","P","ldlPermt","prepare","M","Pinv","Mt","ar","ac","LNZ","coloffset","adr","bp1","cuthillMckee_1","cuthillMckee","compareNum","list","adj","visited","toVisit","eol","ptr","nbhd","u","getClosestNumber","goal","closest","prev","curr","getCloseIndex","updateSystem","weights","nbPoints","newVector","w","next","getDeltaMatrix","lambda","lowerTriangularNonZeros","permutationEncodedArray","airPLS","maxIterations","factorCriterion","controlPoints","baseLineZones","arr","range","indexFrom","indexTo","baseline","iteration","sumNegDifferences","stopCriterion","cho","Cholesky","difference","calculateError","maxNegativeDiff","corrected","error","_typeof","obj","iterator","sequentialFill","_options","_options$from","_options$to","_options$size","isArray","_i","airPLSBaseline","ys","numberPoints","regressionOptions","airpls","correctedSpectrum","maybeToPrecision","digits","checkArraySize","BaseRegression","new","predict","_predict","train","toLaTeX","score","y2","ySum","chi2","rmsd","xSquared","ySquared","xY","PolynomialRegression","degree","powers","coefficients","checkArrayLength","regress","precision","_toFormula","isLaTeX","sup","closeSup","times","fn","str","charAt","load","json","pr","F","FT","A","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","baselineCorrection","xPadding","fromEnd","toEnd","xRolling","fct","padding","subArray","buffer","xRollingAverage","xRollingMedian","rollingAverageBaseline","defaults","actualOptions","assign","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","xs","windowSize","derivative","polynomial","half","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","gramPoly","Grampoly","genFact","gf","weight","firstDerivative","secondDerivative","thirdDerivative","savitzkyGolay","ensureGrowing","equallySpaced","filterX","filterXY","filters","logs","Date","now","filterFct","Filters","time","newSpectrum","isMonotone","global","factory","this","isString","isFiniteImpl","isNumber","uniq","strings","seen","item","hasOwnProperty","compareArray","properties","mulSafe","decimals","arg","getFractional","divSafe","den","invDen","val","QtyError","err","create","message","stack","throwIncompatibleUnits","left","right","UNITS","PI","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","scalar","numerator","denominator","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","kind","unitKeys","substr","getKinds","getAliases","unitName","SIGNATURE_VECTOR","unitSignature","signature","unitSignatureVector","isBase","toBase","SIGN","INTEGER","SIGNED_INTEGER","FRACTION","FLOAT","EXPONENT","SCI_NUMBER","SIGNED_NUMBER","QTY_STRING","QTY_STRING_REGEX","RegExp","POWER_OP","SAFE_POWER","TOP_REGEX","BOTTOM_REGEX","trim","exec","scalarMatch","parseFloat","bottom","nx","UNIT_TEST_REGEX","test","parseUnits","PREFIX_REGEX","UNIT_REGEX","BOUNDARY_REGEX","UNIT_MATCH","UNIT_MATCH_REGEX","parsedUnitsCache","cached","unitMatch","normalizedUnits","globalParse","isQty","Qty","initValue","initUnits","assertValidConstructorArgs","baseScalar","_conversionCache","isDefinitionObject","updateBaseScalar","isTemperature","KINDS","knownSignature","isDegrees","subtractTemperatures","lhs","rhs","lhsUnits","rhsConverted","dstDegrees","getDegreeUnits","subtractTempDegrees","deg","tempDegrees","addTempDegrees","toDegrees","src","dst","srcDegK","toDegK","dstUnits","dstScalar","qty","toTemp","toTempK","isCompatible","isInverse","baseUnitCache","toBaseUnits","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","every","_isBase","NestedMap","childMap","defaultFormatter","formatter","_units","numIsUnity","denIsUnity","numUnits","stringifyUnits","denUnits","targetUnitsOrMaxDecimalsOrPrec","maxDecimals","targetUnits","out","outScalar","format","targetQty","stringifiedUnitsCache","stringified","isUnity","simplify","getOutputNames","unitNames","token","tokenNext","unitCounts","acc","unitCounter","unitCount","version","convertUnit","fromUnit","toUnit","normalize","testRegExp","ensureRegexp","string","parts","stringToRegexp","flags","getConvertedVariable","newUnits","getXYSpectrum","xVariable","yVariable","labels","split","variableNames","getPossibleVariable","variableName","possible","convertibleUnits","regexpLabel","_b","upper","lower","possibleFiltered","Analysis","substring","spectrumCallback","cache","pushSpectrum","standardizeData","getXY","getSpectrum","getXLabel","getYLabel","analysisOptions","reverse","isUtf8","buf","ensureString","blob","ArrayBuffer","isView","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","byteOffset","byteLength","isutf8","parseString","lowercase","number","GC_MS_FIELDS","complexChromatogram","chromatogram","ms","dimension","existingGCMSFields","convertMSFieldToLabel","pageValue","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentX","firstX","currentY","firstY","endLine","ascii","charCodeAt","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","parseXY","parseXYZ","lines","xFactor","numberOfVariables","parseXYA","removeSymbolRegExp","isXYAdata","convertTo3DZ","minZ","maxZ","ySize","xSize","z","lastX","lastY","medians","getMedian","minX","maxX","maxY","noise","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","xN","dx","yN","dy","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","noiseMultiplier","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","minMax","gyromagneticRatio","postProcessingNMR","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","symbol","nucleus","startsWith","$NUC2","f2index","$NUC1","yType","pageSymbolIndex","pageSymbol","ratio0","ratio1","ratio","profiling","action","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","xIndex","yIndex","firstVariable","secondVariable","lowerCaseSymbol","vardim","varname","prepareSpectrum","ntuplesSeparatorRegExp","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","jcamp","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","dataValue","infos","datatable","parentEntry","info","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","pop","flatten","fromJcamp","addJcamp","converted","currentSpectrum","addInfoData","header","checkNumberOrArray","getExtremeValues","firstRow","firstLast","pseudoDigits","SQZ_P","SQZ_N","DIF_P","DIF_N","DUP","maxLinelength","vectorEncoder","intervalX","xyEncoding","fixEncoding","squeezedEncoding","differenceEncoding","differenceDuplicateEncoding","commaSeparatedValuesEncoding","packedEncoding","separator","outputData","dataLength","squeezedDigit","mult","charCount","encodedData","encodedNumber","diffData","numDiff","differenceDigit","duplicateDigit","sqzDigits","diffDigits","dupDigits","creatorNtuples","owner","origin","varName","varType","varDim","isDependent","infoKeys","isNMR","xData","yData","isPeakData","point","isXYData","getFactorNumber","getBestFactor","onlyInteger","extremeValues","getNumber","rounded","peakTableCreator","rescaleAndEnsureInteger","xyDataCreator","infoDefaultKeys","fromJSON","fromVariables","forceNtuples","jcampOptions","toJcamps","jcamps","getJcamp","toJcamp","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","fwhm","gaussianWidthToFWHM","fwhmToWidth","gaussianFwhmToWidth","widthToFWHM","gaussianFct","getArea","height","calculateGaussianHeight","getGaussianArea","getFactor","area","getGaussianFactor","getData","getGaussianData","calculateHeight","getParameters","shape","Lorentzian","lorentzianFwhmToWidth","lorentzianWidthToFWHM","lorentzianFct","getLorentzianArea","getLorentzianFactor","getLorentzianData","calculateLorentzianHeight","PseudoVoigt","mu","pseudoVoigtFwhmToWidth","pseudoVoigtWidthToFWHM","pseudoVoigtFct","getPseudoVoigtArea","getPseudoVoigtFactor","calculatePseudoVoigtHeight","getPseudoVoigtData","sumOfGaussians","parameters","nL","gaussian","sumOfLorentzians","lorentzian","sumOfPseudoVoigts","pseudoVoigt","isValidKey","isObject","isPrimitive","assignDeep","args","xObject","init","peak","gradientDifference","yObject","fwhmObject","muObject","checkInput","peakList","optimization","peaks","paramsFunc","defaultParameters","getMaxValue","par","checkOptions","parameterizedFunction","timeout","minValues","maxValues","initialValues","damping","dampingStepUp","dampingStepDown","errorTolerance","centralDifference","improvementThreshold","parLen","filler","checkTimeout","endTime","weightSquare","errorCalculation","func","gradientFunction","evaluatedData","params","paramFunction","nbParams","param","auxParams","funcParam","funcParam2","matrixFunction","gradientFunc","residualError","inverseMatrix","jacobianWeightResidualError","perturbations","levenbergMarquardt","optimalError","optimalParameters","converged","previousError","improvementMetric","parameterValues","parameterError","iterations","LEVENBERG_MARQUARDT","selectMethod","optimizationOptions","getKind","lmOptions","optimize","nbShapes","parameterKey","pMin","pMax","pInit","gradientDifferenceValue","pFit","peakPicking","expectedFWHM","isMax","shapeOptions","_c","optimizedPeak","optimizedIndex","maximumY","optimizePeak","optimized","optimizeTop","beta","gamma","gsd","sgOptions","noiseLevel","smoothY","maxCriteria","minMaxRatio","realTopDetection","noiseInfo","dY","ddY","yThreshold","dX","lastMax","lastMin","minddY","intervalL","intervalR","lastK","minddYIndex","minDistance","currentDistance","inflectionPoints","autoPeakPicking","normalizationOptions","minPeakWidth","tempSpectrum","normalizedSpectrum","xyClosestYPoint","JSGraph","getAnnotations","strokeColor","creationFct","mode","annotationAbsorbance","annotationTransmittance","showKind","showAssignment","text","anchor","wavenumber","transmittance","assignment","assignmentAngle","absorbance","angle","commonFromJcamp","bytes","encoder","TextEncoder","encode","defaultByteLength","IOBuffer","dataIsGiven","lastWrittenByte","offset","dvOffset","littleEndian","_data","DataView","_mark","_marks","available","isLittleEndian","setLittleEndian","isBigEndian","setBigEndian","skip","seek","mark","reset","pushMark","popMark","rewind","ensureAvailable","lengthNeeded","newLength","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","readInt16","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readBigInt64","getBigInt64","readBigUint64","getBigUint64","readChar","fromCharCode","readChars","readUtf8","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeBigInt64","setBigInt64","writeBigUint64","setBigUint64","writeChar","writeChars","writeUtf8","toArray","getFlagParameters","flag","y16BitPrecision","useExperimentExtension","multiFile","zValuesRandom","zValuesUneven","customAxisLabels","xyxy","xy","getSubFlagParameters","changed","noPeakTable","modifiedArithmetic","equidistantArray","minimum","maximum","longToDate","long","date","setUTCFullYear","setUTCMonth","setUTCDate","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","toISOString","subHeader","exponentY","indexNumber","startingZ","endingZ","noiseValue","numberCoAddedScans","wAxisValue","reserved","readDataBlock","mainHeader","Float32Array","startingX","endingX","fileVersion","xUnitsType","yUnitsType","groups","readLogBlock","logOffset","logHeader","memorySize","textOffset","binarySize","diskArea","logData","logASCII","xzwTypes","xzwType","yTypes","experimentSettings","code","oldHeader","experimentType","zUnitsType","postingDisposition","resolutionDescription","sourceInstrumentDescription","peakPointNumber","spare","memo","xyzLabels","modifiedFlag","processingCode","calibrationLevel","subMethodSampleInjectionNumber","concentrationFactor","methodFile","zSubIncrement","wPlanes","wPlaneIncrement","wAxisUnits","zTypeYear","scans","ioBuffer","fromSPC","OriginalJSGraph"],"mappings":"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