{"version":3,"file":"spectra-processor.esm.js","sources":["../node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib/x/getOutputArray.js","../node_modules/ml-spectra-processing/lib/x/xMedian.js","../node_modules/ml-spectra-processing/lib/x/xCheck.js","../node_modules/ml-spectra-processing/lib/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib/x/xAbsoluteSum.js","../node_modules/ml-spectra-processing/lib/x/xAdd.js","../node_modules/ml-spectra-processing/lib/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib/x/xMultiply.js","../node_modules/ml-spectra-processing/lib/x/xCorrelation.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/matrix.js","../node_modules/ml-matrix/matrix.mjs","../node_modules/ml-spectra-processing/lib/x/xMean.js","../node_modules/ml-spectra-processing/lib/x/xVariance.js","../node_modules/ml-spectra-processing/lib/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib/x/xEnsureFloat64.js","../node_modules/fft.js/lib/fft.js","../node_modules/ml-spectra-processing/lib/utils/createArray.js","../node_modules/ml-spectra-processing/lib/utils/createFromToArray.js","../node_modules/ml-spectra-processing/lib/x/xSubtract.js","../node_modules/ml-spectra-processing/lib/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib/x/xMinValue.js","../node_modules/ml-spectra-processing/lib/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib/x/utils/erfcinv.js","../node_modules/ml-spectra-processing/lib/x/utils/simpleNormInv.js","../node_modules/ml-spectra-processing/lib/x/xNoiseSanPlot.js","../node_modules/ml-spectra-processing/lib/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib/x/xSum.js","../node_modules/ml-spectra-processing/lib/x/xNormed.js","../node_modules/ml-spectra-processing/lib/x/xPadding.js","../node_modules/ml-spectra-processing/lib/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/lib/x/xRescale.js","../node_modules/ml-spectra-processing/lib/x/xRolling.js","../node_modules/ml-spectra-processing/lib/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib/x/xRollingMedian.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCreateEmpty.js","../node_modules/ml-spectra-processing/lib/matrix/matrixAutoCorrelation.js","../node_modules/ml-spectra-processing/lib/matrix/matrixBoxPlot.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCenterZMean.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib/matrix/matrixMinMaxZ.js","../node_modules/ml-spectra-processing/lib/matrix/matrixPQN.js","../node_modules/ml-spectra-processing/lib/matrix/matrixZRescale.js","../node_modules/ml-spectra-processing/lib/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib/xy/xyMaxYPoint.js","../node_modules/ml-spectra-processing/lib/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib/xy/xyGrowingX.js","../node_modules/ml-spectra-processing/lib/xy/xyIntegration.js","../node_modules/ml-spectra-processing/lib/xy/xyMinYPoint.js","../node_modules/ml-spectra-processing/lib/xy/xySortX.js","../node_modules/ml-spectra-processing/lib/xy/xyUniqueX.js","../node_modules/chroma-js/src/utils/limit.js","../node_modules/chroma-js/src/utils/clip_rgb.js","../node_modules/chroma-js/src/utils/type.js","../node_modules/chroma-js/src/utils/unpack.js","../node_modules/chroma-js/src/utils/last.js","../node_modules/chroma-js/src/utils/index.js","../node_modules/chroma-js/src/io/input.js","../node_modules/chroma-js/src/Color.js","../node_modules/chroma-js/src/version.js","../node_modules/chroma-js/src/chroma.js","../node_modules/chroma-js/src/colors/w3cx11.js","../node_modules/chroma-js/src/io/hex/hex2rgb.js","../node_modules/chroma-js/src/io/hex/rgb2hex.js","../node_modules/chroma-js/src/io/named/index.js","../node_modules/chroma-js/src/ops/alpha.js","../node_modules/chroma-js/src/ops/clipped.js","../node_modules/chroma-js/src/io/lab/lab-constants.js","../node_modules/chroma-js/src/io/lab/lab2rgb.js","../node_modules/chroma-js/src/io/lab/rgb2lab.js","../node_modules/chroma-js/src/io/lab/index.js","../node_modules/chroma-js/src/ops/darken.js","../node_modules/chroma-js/src/ops/get.js","../node_modules/chroma-js/src/ops/luminance.js","../node_modules/chroma-js/src/interpolator/index.js","../node_modules/chroma-js/src/generator/mix.js","../node_modules/chroma-js/src/ops/mix.js","../node_modules/chroma-js/src/ops/premultiply.js","../node_modules/chroma-js/src/io/lch/lch2lab.js","../node_modules/chroma-js/src/io/lch/lch2rgb.js","../node_modules/chroma-js/src/io/lch/hcl2rgb.js","../node_modules/chroma-js/src/io/lch/lab2lch.js","../node_modules/chroma-js/src/io/lch/rgb2lch.js","../node_modules/chroma-js/src/io/lch/index.js","../node_modules/chroma-js/src/ops/saturate.js","../node_modules/chroma-js/src/ops/set.js","../node_modules/chroma-js/src/ops/shade.js","../node_modules/chroma-js/src/interpolator/rgb.js","../node_modules/chroma-js/src/interpolator/lrgb.js","../node_modules/chroma-js/src/interpolator/lab.js","../node_modules/chroma-js/src/interpolator/_hsx.js","../node_modules/chroma-js/src/interpolator/lch.js","../node_modules/chroma-js/src/io/num/num2rgb.js","../node_modules/chroma-js/src/io/num/rgb2num.js","../node_modules/chroma-js/src/io/num/index.js","../node_modules/chroma-js/src/interpolator/num.js","../node_modules/chroma-js/src/io/hcg/hcg2rgb.js","../node_modules/chroma-js/src/io/hcg/rgb2hcg.js","../node_modules/chroma-js/src/io/hcg/index.js","../node_modules/chroma-js/src/interpolator/hcg.js","../node_modules/chroma-js/src/io/hsi/hsi2rgb.js","../node_modules/chroma-js/src/io/hsi/rgb2hsi.js","../node_modules/chroma-js/src/io/hsi/index.js","../node_modules/chroma-js/src/interpolator/hsi.js","../node_modules/chroma-js/src/io/hsl/hsl2rgb.js","../node_modules/chroma-js/src/io/hsl/rgb2hsl.js","../node_modules/chroma-js/src/io/hsl/index.js","../node_modules/chroma-js/src/interpolator/hsl.js","../node_modules/chroma-js/src/io/hsv/hsv2rgb.js","../node_modules/chroma-js/src/io/hsv/rgb2hsv.js","../node_modules/chroma-js/src/io/hsv/index.js","../node_modules/chroma-js/src/interpolator/hsv.js","../node_modules/chroma-js/src/utils/multiply-matrices.js","../node_modules/chroma-js/src/io/oklab/oklab2rgb.js","../node_modules/chroma-js/src/io/oklab/rgb2oklab.js","../node_modules/chroma-js/src/io/oklab/index.js","../node_modules/chroma-js/src/interpolator/oklab.js","../node_modules/chroma-js/src/interpolator/oklch.js","../node_modules/chroma-js/src/generator/average.js","../node_modules/chroma-js/src/generator/scale.js","../node_modules/chroma-js/src/generator/bezier.js","../node_modules/chroma-js/src/io/rgb/index.js","../node_modules/chroma-js/src/generator/blend.js","../node_modules/chroma-js/src/generator/cubehelix.js","../node_modules/chroma-js/src/generator/random.js","../node_modules/chroma-js/src/utils/analyze.js","../node_modules/chroma-js/src/utils/contrast.js","../node_modules/chroma-js/src/utils/contrastAPCA.js","../node_modules/chroma-js/src/utils/delta-e.js","../node_modules/chroma-js/src/utils/distance.js","../node_modules/chroma-js/src/utils/valid.js","../node_modules/chroma-js/src/utils/scales.js","../node_modules/chroma-js/src/colors/colorbrewer.js","../node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js","../node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js","../node_modules/chroma-js/src/io/cmyk/index.js","../node_modules/chroma-js/src/io/css/hsl2css.js","../node_modules/chroma-js/src/io/css/lab2css.js","../node_modules/chroma-js/src/io/css/lch2css.js","../node_modules/chroma-js/src/io/css/oklab2css.js","../node_modules/chroma-js/src/io/oklch/rgb2oklch.js","../node_modules/chroma-js/src/io/css/oklch2css.js","../node_modules/chroma-js/src/io/css/rgb2css.js","../node_modules/chroma-js/src/io/oklch/oklch2rgb.js","../node_modules/chroma-js/src/io/css/css2rgb.js","../node_modules/chroma-js/src/io/css/index.js","../node_modules/chroma-js/src/io/gl/index.js","../node_modules/chroma-js/src/io/hex/index.js","../node_modules/chroma-js/src/io/temp/temperature2rgb.js","../node_modules/chroma-js/src/io/temp/rgb2temperature.js","../node_modules/chroma-js/src/io/temp/index.js","../node_modules/chroma-js/src/io/oklch/index.js","../node_modules/chroma-js/index.js","../lib/jsgraph/getAutocorrelationChart.js","../lib/spectra/getBoxPlotData.js","../lib/jsgraph/getBoxPlotChart.js","../lib/jsgraph/addChartDataStyle.js","../lib/jsgraph/getChart.js","../lib/jsgraph/getNormalizationAnnotations.js","../lib/jsgraph/getNormalizedChart.js","../lib/jsgraph/getPostProcessedChart.js","../lib/spectra/getNormalizedData.js","../lib/jsgraph/getTrackAnnotation.js","../lib/metadata/getCategoriesStats.js","../lib/metadata/getClassLabels.js","../lib/metadata/getClasses.js","../lib/metadata/getMetadata.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/lib-esm/parseString.js","../node_modules/gyromagnetic-ratio/lib-esm/gyromagneticRatioMHzT.js","../node_modules/gyromagnetic-ratio/lib-esm/getGyromagneticNucleus.js","../node_modules/gyromagnetic-ratio/lib-esm/getGyromagneticRatio.js","../node_modules/gyromagnetic-ratio/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/jcampconverter/dist/jcampconverter.js","../lib/Kinds.js","../lib/parser/parseJcamp.js","../lib/parser/parseMatrix.js","../node_modules/xy-parser/lib-esm/parse.js","../node_modules/xy-parser/lib-esm/index.js","../lib/parser/parseText.js","../lib/spectra/getAutocorrelation.js","../lib/spectra/getMeanData.js","../lib/spectra/util/convertToText.js","../lib/spectra/getNormalizedText.js","../node_modules/object-hash/dist/object_hash.js","../lib/spectra/scaled/integration.js","../lib/spectra/scaled/max.js","../lib/spectra/scaled/min.js","../lib/spectra/scaled/minMax.js","../lib/spectra/getPostProcessedData.js","../lib/spectra/getPostProcessedText.js","../lib/spectrum/getData.js","../node_modules/ml-signal-processing/lib/filters/scaling/centerMean.js","../node_modules/ml-signal-processing/lib/filters/scaling/centerMedian.js","../node_modules/ml-signal-processing/lib/filters/x/fromTo.js","../node_modules/ml-signal-processing/lib/filters/scaling/normed.js","../node_modules/ml-signal-processing/lib/filters/scaling/divideBySD.js","../node_modules/ml-signal-processing/lib/filters/scaling/rescale.js","../node_modules/ml-signal-processing/lib/filters/scaling/paretoNormalization.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/lib-esm/checkArrayLength.js","../node_modules/ml-regression-base/lib-esm/BaseRegression.js","../node_modules/ml-regression-base/lib-esm/maybeToPrecision.js","../node_modules/ml-regression-polynomial/lib-esm/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/baselines/src/iterativePolynomial.js","../node_modules/baselines/src/rollingAverage.js","../node_modules/ml-rolling-ball-baseline/lib-esm/rollingBall.js","../node_modules/baselines/src/rollingBall.js","../node_modules/baselines/src/rollingMedian.js","../node_modules/ml-signal-processing/lib/filters/baseline/airPLSBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/iterativePolynomialBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingAverageBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingBallBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingMedianBaseline.js","../node_modules/ml-savitzky-golay-generalized/lib-esm/index.js","../node_modules/ml-signal-processing/lib/filters/sg/firstDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/secondDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/thirdDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/savitzkyGolay.js","../node_modules/ml-signal-processing/lib/filters/x/ensureGrowing.js","../node_modules/ml-signal-processing/lib/filters/x/reverseIfNeeded.js","../node_modules/ml-signal-processing/lib/filters/x/equallySpaced.js","../node_modules/ml-signal-processing/lib/filters/x/filterX.js","../node_modules/ml-signal-processing/lib/filters/x/setMaxX.js","../node_modules/ml-signal-processing/lib/filters/x/setMinX.js","../node_modules/ml-gsd/lib/algorithms/getMinMaxIntervals.js","../node_modules/ml-gsd/lib/algorithms/tryMatchOneIntervalWithMinData.js","../node_modules/ml-gsd/lib/algorithms/autoAlgorithm.js","../node_modules/ml-gsd/lib/algorithms/getPeaksFromIntervals.js","../node_modules/ml-gsd/lib/algorithms/xGetCrossZeroPoints.js","../node_modules/ml-gsd/lib/algorithms/firstDerivative.js","../node_modules/ml-gsd/lib/algorithms/secondDerivative.js","../node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-gsd/lib/gsd.js","../node_modules/ml-signal-processing/lib/filters/x/calibrateX.js","../node_modules/ml-signal-processing/lib/filters/x/xFunction.js","../node_modules/ml-signal-processing/lib/filters/scaling/yFunction.js","../node_modules/ml-signal-processing/lib/filters/y/setMaxY.js","../node_modules/ml-signal-processing/lib/filters/y/setMinY.js","../node_modules/ml-signal-processing/lib/filterXY.js","../lib/spectrum/getNormalized.js","../lib/spectrum/updateRangesInfo.js","../lib/spectrum/Spectrum.js","../lib/SpectraProcessor.js","../lib/jsgraph/getFilterAnnotations.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.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 * Calculates the median of an array.\n * @param input - Array containing values\n * @param options\n * @returns - median\n */\nexport function xMedian(input, options = {}) {\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    const { exact = false } = options || {};\n    const array = input.slice();\n    const middleIndex = calcMiddle(0, array.length - 1);\n    const median = quickSelect(array, middleIndex);\n    if (array.length % 2 === 1 || !exact) {\n        return median;\n    }\n    const medianNext = quickSelect(array, middleIndex + 1);\n    return (median + medianNext) / 2;\n}\nfunction quickSelect(array, middleIndex) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    let currentLow = 0;\n    let currentHigh = 0;\n    while (true) {\n        if (high <= low) {\n            return array[middleIndex];\n        }\n        if (high === low + 1) {\n            if (array[low] > array[high]) {\n                swap(array, low, high);\n            }\n            return array[middleIndex];\n        }\n        // Find median of low, middle and high items; swap into position low\n        middle = calcMiddle(low, high);\n        if (array[middle] > array[high])\n            swap(array, middle, high);\n        if (array[low] > array[high])\n            swap(array, low, high);\n        if (array[middle] > array[low])\n            swap(array, middle, low);\n        // Swap low item (now in position middle) into position (low+1)\n        swap(array, middle, low + 1);\n        // Nibble from each end towards middle, swapping items when stuck\n        currentLow = low + 1;\n        currentHigh = high;\n        while (true) {\n            do\n                currentLow++;\n            while (array[low] > array[currentLow]);\n            do\n                currentHigh--;\n            while (array[currentHigh] > array[low]);\n            if (currentHigh < currentLow) {\n                break;\n            }\n            swap(array, currentLow, currentHigh);\n        }\n        // Swap middle item (in position low) back into correct position\n        swap(array, low, currentHigh);\n        // Re-set active partition\n        if (currentHigh <= middleIndex) {\n            low = currentLow;\n        }\n        if (currentHigh >= middleIndex) {\n            high = currentHigh - 1;\n        }\n    }\n}\nfunction swap(array, i, j) {\n    const temp = array[j];\n    array[j] = array[i];\n    array[i] = temp;\n}\nfunction calcMiddle(i, j) {\n    return Math.floor((i + j) / 2);\n}\n//# sourceMappingURL=xMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - Array to check.\n * @param options - Additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength } = options;\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    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (minLength && input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n * @param array - array of numbers\n * @param target - target\n * @param options\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.js\";\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex } = options;\n    const { 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.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\nexport function xAbsoluteSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sum = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sum += Math.abs(array[i]);\n    }\n    return sum;\n}\n//# sourceMappingURL=xAbsoluteSum.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param array1 - the first array\n * @param array2 - the second array or number\n * @returns the result of the addition\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(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=xAdd.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replaceAll(/(?<before>^|\\W)(?<after>[\\da-z]{2,}\\()/g, '$<before>Math.$<after>')\n        .replaceAll('Math.Math', 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (Number.isNaN(toReturn[i])) {\n            throw new Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(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('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const 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=xMultiply.js.map","/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n * @param A - first array\n * @param B - sencond array\n */\nexport function xCorrelation(A, B) {\n    const n = A.length;\n    let sumA = 0;\n    let sumA2 = 0;\n    let sumB = 0;\n    let sumB2 = 0;\n    let sumAB = 0;\n    for (let i = 0; i < n; i++) {\n        const a = A[i];\n        const b = B[i];\n        sumA += a;\n        sumA2 += a ** 2;\n        sumB += b;\n        sumB2 += b ** 2;\n        sumAB += a * b;\n    }\n    return ((n * sumAB - sumA * sumB) /\n        (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2)));\n}\n//# sourceMappingURL=xCorrelation.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","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isAnyArray = require('is-any-array');\nvar rescale = require('ml-array-rescale');\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n  const {\n    maxRows = 15,\n    maxColumns = 10,\n    maxNumSize = 8,\n    padMinus = 'auto',\n  } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n\n  if (padMinus === 'auto') {\n    padMinus = false;\n    loop: for (let i = 0; i < maxI; i++) {\n      for (let j = 0; j < maxJ; j++) {\n        if (matrix.get(i, j) < 0) {\n          padMinus = true;\n          break loop;\n        }\n      }\n    }\n  }\n\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, padMinus));\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, padMinus) {\n  return (\n    num >= 0 && padMinus\n      ? ` ${formatNumber2(num, maxNumSize - 1)}`\n      : formatNumber2(num, maxNumSize)\n  ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n  // small.length numbers should be as is\n  let str = num.toString();\n  if (str.length <= len) return str;\n\n  // (7)'0.00123' is better then (7)'1.23e-2'\n  // (8)'0.000123' is worse then (7)'1.23e-3',\n  let fix = num.toFixed(len);\n  if (fix.length > len) {\n    fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n  }\n  if (\n    fix.length <= len &&\n    !fix.startsWith('0.000') &&\n    !fix.startsWith('-0.000')\n  ) {\n    return fix;\n  }\n\n  // well, if it's still too long the user should've used longer numbers\n  let exp = num.toExponential(len);\n  if (exp.length > len) {\n    exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n  }\n  return exp.slice(0);\n}\n\nfunction 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, 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, this.get(i, j) ** matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n}\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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\nfunction checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray.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\nfunction checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray.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\nfunction 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\nfunction 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\nfunction checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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 += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction 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\nfunction 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 += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction 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\nfunction 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 += matrix.get(i, j) ** 2 / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nfunction 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\nclass 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  isDistance() {\n    if (!this.isSymmetric()) return false;\n\n    for (let i = 0; i < this.rows; i++) {\n      if (this.get(i, i) !== 0) return false;\n    }\n\n    return true;\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    switch (type) {\n      case 'max':\n        return this.max();\n      case 'frobenius':\n        return Math.sqrt(this.dot(this));\n      default:\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  mpow(scalar) {\n    if (!this.isSquare()) {\n      throw new RangeError('Matrix must be square');\n    }\n    if (!Number.isInteger(scalar) || scalar < 0) {\n      throw new RangeError('Exponent must be a non-negative integer');\n    }\n    // Russian Peasant exponentiation, i.e. exponentiation by squaring\n    let result = Matrix.eye(this.rows);\n    let bb = this;\n    // Note: Don't bit shift. In JS, that would truncate at 32 bits\n    for (let e = scalar; e >= 1; e /= 2) {\n      if ((e & 1) !== 0) {\n        result = result.mmul(bb);\n      }\n      bb = bb.mmul(bb);\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 result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      result = result.setSubMatrix(c11, 0, 0);\n      result = result.setSubMatrix(c12, c11.rows, 0);\n      result = result.setSubMatrix(c21, 0, c11.columns);\n      result = result.setSubMatrix(c22, c11.rows, c11.columns);\n      return result.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,\n          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    return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n  }\n\n  /**\n   * @template {AbstractMatrix} M\n   * @param {AbstractMatrix} from\n   * @param {M} to\n   * @return {M}\n   */\n  static copy(from, to) {\n    for (const [row, column, value] of from.entries()) {\n      to.set(row, column, value);\n    }\n\n    return to;\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.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.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.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.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.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.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  [Symbol.iterator]() {\n    return this.entries();\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield [row, column, value]\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *entries() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield [row, col, this.get(row, col)];\n      }\n    }\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield value\n   * @returns {Generator<number, void, void>}\n   */\n  *values() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield this.get(row, col);\n      }\n    }\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\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\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\nclass Matrix extends AbstractMatrix {\n  /**\n   * @type {Float64Array[]}\n   */\n  data;\n\n  /**\n   * Init an empty matrix\n   * @param {number} nRows\n   * @param {number} nColumns\n   */\n  #initData(nRows, nColumns) {\n    this.data = [];\n\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\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      this.#initData(nRows.rows, nRows.columns);\n      Matrix.copy(nRows, this);\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      this.#initData(nRows, nColumns);\n    } else if (isAnyArray.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\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n\n      this.rows = nRows;\n      this.columns = nColumns;\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\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\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n  /** @type {Matrix} */\n  #matrix;\n\n  get size() {\n    return this.#matrix.size;\n  }\n\n  get rows() {\n    return this.#matrix.rows;\n  }\n\n  get columns() {\n    return this.#matrix.columns;\n  }\n\n  get diagonalSize() {\n    return this.rows;\n  }\n\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isSymmetricMatrix(value) {\n    return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static zeros(diagonalSize) {\n    return new this(diagonalSize);\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static ones(diagonalSize) {\n    return new this(diagonalSize).fill(1);\n  }\n\n  /**\n   * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n   * @return {this}\n   */\n  constructor(diagonalSize) {\n    super();\n\n    if (Matrix.isMatrix(diagonalSize)) {\n      if (!diagonalSize.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n\n      this.#matrix = Matrix.copy(\n        diagonalSize,\n        new Matrix(diagonalSize.rows, diagonalSize.rows),\n      );\n    } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n      this.#matrix = new Matrix(diagonalSize, diagonalSize);\n    } else {\n      this.#matrix = new Matrix(diagonalSize);\n\n      if (!this.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n    }\n  }\n\n  clone() {\n    const matrix = new SymmetricMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  toMatrix() {\n    return new Matrix(this);\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.#matrix.get(rowIndex, columnIndex);\n  }\n  set(rowIndex, columnIndex, value) {\n    // symmetric set\n    this.#matrix.set(rowIndex, columnIndex, value);\n    this.#matrix.set(columnIndex, rowIndex, value);\n\n    return this;\n  }\n\n  removeCross(index) {\n    // symmetric remove side\n    this.#matrix.removeRow(index);\n    this.#matrix.removeColumn(index);\n\n    return this;\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    const row = array.slice();\n    row.splice(index, 1);\n\n    this.#matrix.addRow(index, row);\n    this.#matrix.addColumn(index, array);\n\n    return this;\n  }\n\n  /**\n   * @param {Mask[]} mask\n   */\n  applyMask(mask) {\n    if (mask.length !== this.diagonalSize) {\n      throw new RangeError('Mask size do not match with matrix size');\n    }\n\n    // prepare sides to remove from matrix from mask\n    /** @type {number[]} */\n    const sidesToRemove = [];\n    for (const [index, passthroughs] of mask.entries()) {\n      if (passthroughs) continue;\n      sidesToRemove.push(index);\n    }\n    // to remove from highest to lowest for no mutation shifting\n    sidesToRemove.reverse();\n\n    // remove sides\n    for (const sideIndex of sidesToRemove) {\n      this.removeCross(sideIndex);\n    }\n\n    return this;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * iterate from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 1 2 3 4\n   * B 2 5 6 7\n   * C 3 6 8 9\n   * D 4 7 9 10\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n   *\n   * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n\n    /** @type {number[]} */\n    const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n    for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   * @return {SymmetricMatrix}\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n    // compactSize = (sideSize * (sideSize + 1)) / 2\n    // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n    // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new SymmetricMatrix(diagonalSize);\n    for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return matrix;\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield [row, column, value]\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightEntries() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield [row, col, value];\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield value\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightValues() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield value;\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isDistanceMatrix(value) {\n    return (\n      SymmetricMatrix.isSymmetricMatrix(value) &&\n      value.klassSubType === 'DistanceMatrix'\n    );\n  }\n\n  constructor(sideSize) {\n    super(sideSize);\n\n    if (!this.isDistance()) {\n      throw new TypeError('Provided arguments do no produce a distance matrix');\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    // distance matrix diagonal is 0\n    if (rowIndex === columnIndex) value = 0;\n\n    return super.set(rowIndex, columnIndex, value);\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    // ensure distance\n    array = array.slice();\n    array[index] = 0;\n\n    return super.addCross(index, array);\n  }\n\n  toSymmetricMatrix() {\n    return new SymmetricMatrix(this);\n  }\n\n  clone() {\n    const matrix = new DistanceMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      if (row === col) continue;\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * no diagonal (only zeros)\n   * iterable from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 0 1 2 3\n   * B 1 0 4 5\n   * C 2 4 0 6\n   * D 3 5 6 0\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n   *\n   * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n    const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n    /** @type {number[]} */\n    const compact = new Array(compactLength);\n    for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n\n    if (compactSize === 0) {\n      return new this(0);\n    }\n\n    // compactSize in Natural integer range ]0;∞]\n    // compactSize = (sideSize * (sideSize - 1)) / 2\n    // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new this(diagonalSize);\n    for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return matrix;\n  }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass 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\nclass MatrixColumnView extends BaseView {\n  constructor(matrix, column) {\n    checkColumnIndex(matrix, column);\n    super(matrix, matrix.rows, 1);\n    this.column = column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.column, value);\n    return this;\n  }\n\n  get(rowIndex) {\n    return this.matrix.get(rowIndex, this.column);\n  }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n  constructor(matrix, columnIndices) {\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, matrix.rows, columnIndices.length);\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n  }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n  }\n}\n\nclass MatrixFlipRowView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n  }\n}\n\nclass MatrixRowView extends BaseView {\n  constructor(matrix, row) {\n    checkRowIndex(matrix, row);\n    super(matrix, 1, matrix.columns);\n    this.row = row;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.row, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.row, columnIndex);\n  }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n  constructor(matrix, rowIndices) {\n    checkRowIndices(matrix, rowIndices);\n    super(matrix, rowIndices.length, matrix.columns);\n    this.rowIndices = rowIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n  }\n}\n\nclass MatrixSelectionView extends BaseView {\n  constructor(matrix, rowIndices, columnIndices) {\n    checkRowIndices(matrix, rowIndices);\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, rowIndices.length, columnIndices.length);\n    this.rowIndices = rowIndices;\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n    );\n  }\n}\n\nclass MatrixSubView extends BaseView {\n  constructor(matrix, startRow, endRow, startColumn, endColumn) {\n    checkRange(matrix, startRow, endRow, startColumn, endColumn);\n    super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n    this.startRow = startRow;\n    this.startColumn = startColumn;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n    );\n  }\n}\n\nclass 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\nclass WrapperMatrix1D extends AbstractMatrix {\n  constructor(data, options = {}) {\n    const { rows = 1 } = options;\n\n    if (data.length % rows !== 0) {\n      throw new Error('the data length is not divisible by the number of rows');\n    }\n    super();\n    this.rows = rows;\n    this.columns = data.length / rows;\n    this.data = data;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    this.data[index] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    return this.data[index];\n  }\n\n  _calculateIndex(row, column) {\n    return row * this.columns + column;\n  }\n}\n\nclass 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\nfunction wrap(array, options) {\n  if (isAnyArray.isAnyArray(array)) {\n    if (array[0] && isAnyArray.isAnyArray(array[0])) {\n      return new WrapperMatrix2D(array);\n    } else {\n      return new WrapperMatrix1D(array, options);\n    }\n  } else {\n    throw new Error('the argument is not an array');\n  }\n}\n\nclass 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\nfunction 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\nclass 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\nclass 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 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          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          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\nfunction 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\nfunction 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\nfunction determinant(matrix) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isSquare()) {\n    if (matrix.columns === 0) {\n      return 1;\n    }\n\n    let a, b, c, d;\n    if (matrix.columns === 2) {\n      // 2 x 2 matrix\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(1, 0);\n      d = matrix.get(1, 1);\n\n      return a * d - b * c;\n    } else if (matrix.columns === 3) {\n      // 3 x 3 matrix\n      let subMatrix0, subMatrix1, subMatrix2;\n      subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n      subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n      subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(0, 2);\n\n      return (\n        a * determinant(subMatrix0) -\n        b * determinant(subMatrix1) +\n        c * determinant(subMatrix2)\n      );\n    } else {\n      // general purpose determinant using the LU decomposition\n      return new LuDecomposition(matrix).determinant;\n    }\n  } else {\n    throw Error('determinant can only be calculated for a square matrix');\n  }\n}\n\nfunction xrange(n, exception) {\n  let range = [];\n  for (let i = 0; i < n; i++) {\n    if (i !== exception) {\n      range.push(i);\n    }\n  }\n  return range;\n}\n\nfunction dependenciesOneRow(\n  error,\n  matrix,\n  index,\n  thresholdValue = 10e-10,\n  thresholdError = 10e-10,\n) {\n  if (error > thresholdError) {\n    return new Array(matrix.rows + 1).fill(0);\n  } else {\n    let returnArray = matrix.addRow(index, [0]);\n    for (let i = 0; i < returnArray.rows; i++) {\n      if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n        returnArray.set(i, 0, 0);\n      }\n    }\n    return returnArray.to1DArray();\n  }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n  const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n  matrix = Matrix.checkMatrix(matrix);\n\n  let n = matrix.rows;\n  let results = new Matrix(n, n);\n\n  for (let i = 0; i < n; i++) {\n    let b = Matrix.columnVector(matrix.getRow(i));\n    let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n    let svd = new SingularValueDecomposition(Abis);\n    let x = svd.solve(b);\n    let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n    results.setRow(\n      i,\n      dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n    );\n  }\n  return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isEmpty()) {\n    // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n    // (0xn)*(nx0)*(0xn) = 0xn\n    // (nx0)*(0xn)*(nx0) = nx0\n    return matrix.transpose();\n  }\n  let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n  let U = svdSolution.leftSingularVectors;\n  let V = svdSolution.rightSingularVectors;\n  let s = svdSolution.diagonal;\n\n  for (let i = 0; i < s.length; i++) {\n    if (Math.abs(s[i]) > threshold) {\n      s[i] = 1.0 / s[i];\n    } else {\n      s[i] = 0.0;\n    }\n  }\n\n  return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n  const { center = true } = options;\n  if (center) {\n    xMatrix = xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix = yMatrix.center('column');\n    }\n  }\n  const cov = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < cov.rows; i++) {\n    for (let j = 0; j < cov.columns; j++) {\n      cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n    }\n  }\n  return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n\n  const { center = true, scale = true } = options;\n  if (center) {\n    xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix.center('column');\n    }\n  }\n  if (scale) {\n    xMatrix.scale('column');\n    if (!yIsSame) {\n      yMatrix.scale('column');\n    }\n  }\n\n  const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n  const sdy = yIsSame\n    ? sdx\n    : yMatrix.standardDeviation('column', { unbiased: true });\n\n  const corr = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < corr.rows; i++) {\n    for (let j = 0; j < corr.columns; j++) {\n      corr.set(\n        i,\n        j,\n        corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n      );\n    }\n  }\n  return corr;\n}\n\nclass EigenvalueDecomposition {\n  constructor(matrix, options = {}) {\n    const { assumeSymmetric = false } = options;\n\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n    if (!matrix.isSquare()) {\n      throw new Error('Matrix is not a square matrix');\n    }\n\n    if (matrix.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let n = matrix.columns;\n    let V = new Matrix(n, n);\n    let d = new Float64Array(n);\n    let e = new Float64Array(n);\n    let value = matrix;\n    let i, j;\n\n    let isSymmetric = false;\n    if (assumeSymmetric) {\n      isSymmetric = true;\n    } else {\n      isSymmetric = matrix.isSymmetric();\n    }\n\n    if (isSymmetric) {\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          V.set(i, j, value.get(i, j));\n        }\n      }\n      tred2(n, e, d, V);\n      tql2(n, e, d, V);\n    } else {\n      let H = new Matrix(n, n);\n      let ort = new Float64Array(n);\n      for (j = 0; j < n; j++) {\n        for (i = 0; i < n; i++) {\n          H.set(i, j, value.get(i, j));\n        }\n      }\n      orthes(n, H, ort, V);\n      hqr2(n, e, d, V, H);\n    }\n\n    this.n = n;\n    this.e = e;\n    this.d = d;\n    this.V = V;\n  }\n\n  get realEigenvalues() {\n    return Array.from(this.d);\n  }\n\n  get imaginaryEigenvalues() {\n    return Array.from(this.e);\n  }\n\n  get eigenvectorMatrix() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    let n = this.n;\n    let e = this.e;\n    let d = this.d;\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        X.set(i, j, 0);\n      }\n      X.set(i, i, d[i]);\n      if (e[i] > 0) {\n        X.set(i, i + 1, e[i]);\n      } else if (e[i] < 0) {\n        X.set(i, i - 1, e[i]);\n      }\n    }\n    return X;\n  }\n}\n\nfunction tred2(n, e, d, V) {\n  let f, g, h, i, j, k, hh, scale;\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n  }\n\n  for (i = n - 1; i > 0; i--) {\n    scale = 0;\n    h = 0;\n    for (k = 0; k < i; k++) {\n      scale = scale + Math.abs(d[k]);\n    }\n\n    if (scale === 0) {\n      e[i] = d[i - 1];\n      for (j = 0; j < i; j++) {\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n        V.set(j, i, 0);\n      }\n    } else {\n      for (k = 0; k < i; k++) {\n        d[k] /= scale;\n        h += d[k] * d[k];\n      }\n\n      f = d[i - 1];\n      g = Math.sqrt(h);\n      if (f > 0) {\n        g = -g;\n      }\n\n      e[i] = scale * g;\n      h = h - f * g;\n      d[i - 1] = f - g;\n      for (j = 0; j < i; j++) {\n        e[j] = 0;\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        V.set(j, i, f);\n        g = e[j] + V.get(j, j) * f;\n        for (k = j + 1; k <= i - 1; k++) {\n          g += V.get(k, j) * d[k];\n          e[k] += V.get(k, j) * f;\n        }\n        e[j] = g;\n      }\n\n      f = 0;\n      for (j = 0; j < i; j++) {\n        e[j] /= h;\n        f += e[j] * d[j];\n      }\n\n      hh = f / (h + h);\n      for (j = 0; j < i; j++) {\n        e[j] -= hh * d[j];\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        g = e[j];\n        for (k = j; k <= i - 1; k++) {\n          V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n        }\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n      }\n    }\n    d[i] = h;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    V.set(n - 1, i, V.get(i, i));\n    V.set(i, i, 1);\n    h = d[i + 1];\n    if (h !== 0) {\n      for (k = 0; k <= i; k++) {\n        d[k] = V.get(k, i + 1) / h;\n      }\n\n      for (j = 0; j <= i; j++) {\n        g = 0;\n        for (k = 0; k <= i; k++) {\n          g += V.get(k, i + 1) * V.get(k, j);\n        }\n        for (k = 0; k <= i; k++) {\n          V.set(k, j, V.get(k, j) - g * d[k]);\n        }\n      }\n    }\n\n    for (k = 0; k <= i; k++) {\n      V.set(k, i + 1, 0);\n    }\n  }\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n    V.set(n - 1, j, 0);\n  }\n\n  V.set(n - 1, n - 1, 1);\n  e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n  let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n  for (i = 1; i < n; i++) {\n    e[i - 1] = e[i];\n  }\n\n  e[n - 1] = 0;\n\n  let f = 0;\n  let tst1 = 0;\n  let eps = Number.EPSILON;\n\n  for (l = 0; l < n; l++) {\n    tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n    m = l;\n    while (m < n) {\n      if (Math.abs(e[m]) <= eps * tst1) {\n        break;\n      }\n      m++;\n    }\n\n    if (m > l) {\n      do {\n\n        g = d[l];\n        p = (d[l + 1] - g) / (2 * e[l]);\n        r = hypotenuse(p, 1);\n        if (p < 0) {\n          r = -r;\n        }\n\n        d[l] = e[l] / (p + r);\n        d[l + 1] = e[l] * (p + r);\n        dl1 = d[l + 1];\n        h = g - d[l];\n        for (i = l + 2; i < n; i++) {\n          d[i] -= h;\n        }\n\n        f = f + h;\n\n        p = d[m];\n        c = 1;\n        c2 = c;\n        c3 = c;\n        el1 = e[l + 1];\n        s = 0;\n        s2 = 0;\n        for (i = m - 1; i >= l; i--) {\n          c3 = c2;\n          c2 = c;\n          s2 = s;\n          g = c * e[i];\n          h = c * p;\n          r = hypotenuse(p, e[i]);\n          e[i + 1] = s * r;\n          s = e[i] / r;\n          c = p / r;\n          p = c * d[i] - s * g;\n          d[i + 1] = h + s * (c * g + s * d[i]);\n\n          for (k = 0; k < n; k++) {\n            h = V.get(k, i + 1);\n            V.set(k, i + 1, s * V.get(k, i) + c * h);\n            V.set(k, i, c * V.get(k, i) - s * h);\n          }\n        }\n\n        p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n        e[l] = s * p;\n        d[l] = c * p;\n      } while (Math.abs(e[l]) > eps * tst1);\n    }\n    d[l] = d[l] + f;\n    e[l] = 0;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    k = i;\n    p = d[i];\n    for (j = i + 1; j < n; j++) {\n      if (d[j] < p) {\n        k = j;\n        p = d[j];\n      }\n    }\n\n    if (k !== i) {\n      d[k] = d[i];\n      d[i] = p;\n      for (j = 0; j < n; j++) {\n        p = V.get(j, i);\n        V.set(j, i, V.get(j, k));\n        V.set(j, k, p);\n      }\n    }\n  }\n}\n\nfunction orthes(n, H, ort, V) {\n  let low = 0;\n  let high = n - 1;\n  let f, g, h, i, j, m;\n  let scale;\n\n  for (m = low + 1; m <= high - 1; m++) {\n    scale = 0;\n    for (i = m; i <= high; i++) {\n      scale = scale + Math.abs(H.get(i, m - 1));\n    }\n\n    if (scale !== 0) {\n      h = 0;\n      for (i = high; i >= m; i--) {\n        ort[i] = H.get(i, m - 1) / scale;\n        h += ort[i] * ort[i];\n      }\n\n      g = Math.sqrt(h);\n      if (ort[m] > 0) {\n        g = -g;\n      }\n\n      h = h - ort[m] * g;\n      ort[m] = ort[m] - g;\n\n      for (j = m; j < n; j++) {\n        f = 0;\n        for (i = high; i >= m; i--) {\n          f += ort[i] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (i = m; i <= high; i++) {\n          H.set(i, j, H.get(i, j) - f * ort[i]);\n        }\n      }\n\n      for (i = 0; i <= high; i++) {\n        f = 0;\n        for (j = high; j >= m; j--) {\n          f += ort[j] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (j = m; j <= high; j++) {\n          H.set(i, j, H.get(i, j) - f * ort[j]);\n        }\n      }\n\n      ort[m] = scale * ort[m];\n      H.set(m, m - 1, scale * g);\n    }\n  }\n\n  for (i = 0; i < n; i++) {\n    for (j = 0; j < n; j++) {\n      V.set(i, j, i === j ? 1 : 0);\n    }\n  }\n\n  for (m = high - 1; m >= low + 1; m--) {\n    if (H.get(m, m - 1) !== 0) {\n      for (i = m + 1; i <= high; i++) {\n        ort[i] = H.get(i, m - 1);\n      }\n\n      for (j = m; j <= high; j++) {\n        g = 0;\n        for (i = m; i <= high; i++) {\n          g += ort[i] * V.get(i, j);\n        }\n\n        g = g / ort[m] / H.get(m, m - 1);\n        for (i = m; i <= high; i++) {\n          V.set(i, j, V.get(i, j) + g * ort[i]);\n        }\n      }\n    }\n  }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n  let n = nn - 1;\n  let low = 0;\n  let high = nn - 1;\n  let eps = Number.EPSILON;\n  let exshift = 0;\n  let norm = 0;\n  let p = 0;\n  let q = 0;\n  let r = 0;\n  let s = 0;\n  let z = 0;\n  let iter = 0;\n  let i, j, k, l, m, t, w, x, y;\n  let ra, sa, vr, vi;\n  let notlast, cdivres;\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      d[i] = H.get(i, i);\n      e[i] = 0;\n    }\n\n    for (j = Math.max(i - 1, 0); j < nn; j++) {\n      norm = norm + Math.abs(H.get(i, j));\n    }\n  }\n\n  while (n >= low) {\n    l = n;\n    while (l > low) {\n      s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n      if (s === 0) {\n        s = norm;\n      }\n      if (Math.abs(H.get(l, l - 1)) < eps * s) {\n        break;\n      }\n      l--;\n    }\n\n    if (l === n) {\n      H.set(n, n, H.get(n, n) + exshift);\n      d[n] = H.get(n, n);\n      e[n] = 0;\n      n--;\n      iter = 0;\n    } else if (l === n - 1) {\n      w = H.get(n, n - 1) * H.get(n - 1, n);\n      p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n      q = p * p + w;\n      z = Math.sqrt(Math.abs(q));\n      H.set(n, n, H.get(n, n) + exshift);\n      H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n      x = H.get(n, n);\n\n      if (q >= 0) {\n        z = p >= 0 ? p + z : p - z;\n        d[n - 1] = x + z;\n        d[n] = d[n - 1];\n        if (z !== 0) {\n          d[n] = x - w / z;\n        }\n        e[n - 1] = 0;\n        e[n] = 0;\n        x = H.get(n, n - 1);\n        s = Math.abs(x) + Math.abs(z);\n        p = x / s;\n        q = z / s;\n        r = Math.sqrt(p * p + q * q);\n        p = p / r;\n        q = q / r;\n\n        for (j = n - 1; j < nn; j++) {\n          z = H.get(n - 1, j);\n          H.set(n - 1, j, q * z + p * H.get(n, j));\n          H.set(n, j, q * H.get(n, j) - p * z);\n        }\n\n        for (i = 0; i <= n; i++) {\n          z = H.get(i, n - 1);\n          H.set(i, n - 1, q * z + p * H.get(i, n));\n          H.set(i, n, q * H.get(i, n) - p * z);\n        }\n\n        for (i = low; i <= high; i++) {\n          z = V.get(i, n - 1);\n          V.set(i, n - 1, q * z + p * V.get(i, n));\n          V.set(i, n, q * V.get(i, n) - p * z);\n        }\n      } else {\n        d[n - 1] = x + p;\n        d[n] = x + p;\n        e[n - 1] = z;\n        e[n] = -z;\n      }\n\n      n = n - 2;\n      iter = 0;\n    } else {\n      x = H.get(n, n);\n      y = 0;\n      w = 0;\n      if (l < n) {\n        y = H.get(n - 1, n - 1);\n        w = H.get(n, n - 1) * H.get(n - 1, n);\n      }\n\n      if (iter === 10) {\n        exshift += x;\n        for (i = low; i <= n; i++) {\n          H.set(i, i, H.get(i, i) - x);\n        }\n        s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n        // eslint-disable-next-line no-multi-assign\n        x = y = 0.75 * s;\n        w = -0.4375 * s * s;\n      }\n\n      if (iter === 30) {\n        s = (y - x) / 2;\n        s = s * s + w;\n        if (s > 0) {\n          s = Math.sqrt(s);\n          if (y < x) {\n            s = -s;\n          }\n          s = x - w / ((y - x) / 2 + s);\n          for (i = low; i <= n; i++) {\n            H.set(i, i, H.get(i, i) - s);\n          }\n          exshift += s;\n          // eslint-disable-next-line no-multi-assign\n          x = y = w = 0.964;\n        }\n      }\n\n      iter = iter + 1;\n\n      m = n - 2;\n      while (m >= l) {\n        z = H.get(m, m);\n        r = x - z;\n        s = y - z;\n        p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n        q = H.get(m + 1, m + 1) - z - r - s;\n        r = H.get(m + 2, m + 1);\n        s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n        p = p / s;\n        q = q / s;\n        r = r / s;\n        if (m === l) {\n          break;\n        }\n        if (\n          Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n          eps *\n            (Math.abs(p) *\n              (Math.abs(H.get(m - 1, m - 1)) +\n                Math.abs(z) +\n                Math.abs(H.get(m + 1, m + 1))))\n        ) {\n          break;\n        }\n        m--;\n      }\n\n      for (i = m + 2; i <= n; i++) {\n        H.set(i, i - 2, 0);\n        if (i > m + 2) {\n          H.set(i, i - 3, 0);\n        }\n      }\n\n      for (k = m; k <= n - 1; k++) {\n        notlast = k !== n - 1;\n        if (k !== m) {\n          p = H.get(k, k - 1);\n          q = H.get(k + 1, k - 1);\n          r = notlast ? H.get(k + 2, k - 1) : 0;\n          x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n          if (x !== 0) {\n            p = p / x;\n            q = q / x;\n            r = r / x;\n          }\n        }\n\n        if (x === 0) {\n          break;\n        }\n\n        s = Math.sqrt(p * p + q * q + r * r);\n        if (p < 0) {\n          s = -s;\n        }\n\n        if (s !== 0) {\n          if (k !== m) {\n            H.set(k, k - 1, -s * x);\n          } else if (l !== m) {\n            H.set(k, k - 1, -H.get(k, k - 1));\n          }\n\n          p = p + s;\n          x = p / s;\n          y = q / s;\n          z = r / s;\n          q = q / p;\n          r = r / p;\n\n          for (j = k; j < nn; j++) {\n            p = H.get(k, j) + q * H.get(k + 1, j);\n            if (notlast) {\n              p = p + r * H.get(k + 2, j);\n              H.set(k + 2, j, H.get(k + 2, j) - p * z);\n            }\n\n            H.set(k, j, H.get(k, j) - p * x);\n            H.set(k + 1, j, H.get(k + 1, j) - p * y);\n          }\n\n          for (i = 0; i <= Math.min(n, k + 3); i++) {\n            p = x * H.get(i, k) + y * H.get(i, k + 1);\n            if (notlast) {\n              p = p + z * H.get(i, k + 2);\n              H.set(i, k + 2, H.get(i, k + 2) - p * r);\n            }\n\n            H.set(i, k, H.get(i, k) - p);\n            H.set(i, k + 1, H.get(i, k + 1) - p * q);\n          }\n\n          for (i = low; i <= high; i++) {\n            p = x * V.get(i, k) + y * V.get(i, k + 1);\n            if (notlast) {\n              p = p + z * V.get(i, k + 2);\n              V.set(i, k + 2, V.get(i, k + 2) - p * r);\n            }\n\n            V.set(i, k, V.get(i, k) - p);\n            V.set(i, k + 1, V.get(i, k + 1) - p * q);\n          }\n        }\n      }\n    }\n  }\n\n  if (norm === 0) {\n    return;\n  }\n\n  for (n = nn - 1; n >= 0; n--) {\n    p = d[n];\n    q = e[n];\n\n    if (q === 0) {\n      l = n;\n      H.set(n, n, 1);\n      for (i = n - 1; i >= 0; i--) {\n        w = H.get(i, i) - p;\n        r = 0;\n        for (j = l; j <= n; j++) {\n          r = r + H.get(i, j) * H.get(j, n);\n        }\n\n        if (e[i] < 0) {\n          z = w;\n          s = r;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n            t = (x * s - z * r) / q;\n            H.set(i, n, t);\n            H.set(\n              i + 1,\n              n,\n              Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n            );\n          }\n\n          t = Math.abs(H.get(i, n));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    } else if (q < 0) {\n      l = n - 1;\n\n      if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n        H.set(n - 1, n - 1, q / H.get(n, n - 1));\n        H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n      } else {\n        cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n        H.set(n - 1, n - 1, cdivres[0]);\n        H.set(n - 1, n, cdivres[1]);\n      }\n\n      H.set(n, n - 1, 0);\n      H.set(n, n, 1);\n      for (i = n - 2; i >= 0; i--) {\n        ra = 0;\n        sa = 0;\n        for (j = l; j <= n; j++) {\n          ra = ra + H.get(i, j) * H.get(j, n - 1);\n          sa = sa + H.get(i, j) * H.get(j, n);\n        }\n\n        w = H.get(i, i) - p;\n\n        if (e[i] < 0) {\n          z = w;\n          r = ra;\n          s = sa;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            cdivres = cdiv(-ra, -sa, w, q);\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n            vi = (d[i] - p) * 2 * q;\n            if (vr === 0 && vi === 0) {\n              vr =\n                eps *\n                norm *\n                (Math.abs(w) +\n                  Math.abs(q) +\n                  Math.abs(x) +\n                  Math.abs(y) +\n                  Math.abs(z));\n            }\n            cdivres = cdiv(\n              x * r - z * ra + q * sa,\n              x * s - z * sa - q * ra,\n              vr,\n              vi,\n            );\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n            if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n              H.set(\n                i + 1,\n                n - 1,\n                (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n              );\n              H.set(\n                i + 1,\n                n,\n                (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n              );\n            } else {\n              cdivres = cdiv(\n                -r - y * H.get(i, n - 1),\n                -s - y * H.get(i, n),\n                z,\n                q,\n              );\n              H.set(i + 1, n - 1, cdivres[0]);\n              H.set(i + 1, n, cdivres[1]);\n            }\n          }\n\n          t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n - 1, H.get(j, n - 1) / t);\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      for (j = i; j < nn; j++) {\n        V.set(i, j, H.get(i, j));\n      }\n    }\n  }\n\n  for (j = nn - 1; j >= low; j--) {\n    for (i = low; i <= high; i++) {\n      z = 0;\n      for (k = low; k <= Math.min(j, high); k++) {\n        z = z + V.get(i, k) * H.get(k, j);\n      }\n      V.set(i, j, z);\n    }\n  }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n  let r, d;\n  if (Math.abs(yr) > Math.abs(yi)) {\n    r = yi / yr;\n    d = yr + r * yi;\n    return [(xr + r * xi) / d, (xi - r * xr) / d];\n  } else {\n    r = yr / yi;\n    d = yi + r * yr;\n    return [(r * xr + xi) / d, (r * xi - xr) / d];\n  }\n}\n\nclass CholeskyDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n    if (!value.isSymmetric()) {\n      throw new Error('Matrix is not symmetric');\n    }\n\n    let a = value;\n    let dimension = a.rows;\n    let l = new Matrix(dimension, dimension);\n    let positiveDefinite = true;\n    let i, j, k;\n\n    for (j = 0; j < dimension; j++) {\n      let d = 0;\n      for (k = 0; k < j; k++) {\n        let s = 0;\n        for (i = 0; i < k; i++) {\n          s += l.get(k, i) * l.get(j, i);\n        }\n        s = (a.get(j, k) - s) / l.get(k, k);\n        l.set(j, k, s);\n        d = d + s * s;\n      }\n\n      d = a.get(j, j) - d;\n\n      positiveDefinite &&= d > 0;\n      l.set(j, j, Math.sqrt(Math.max(d, 0)));\n      for (k = j + 1; k < dimension; k++) {\n        l.set(j, k, 0);\n      }\n    }\n\n    this.L = l;\n    this.positiveDefinite = positiveDefinite;\n  }\n\n  isPositiveDefinite() {\n    return this.positiveDefinite;\n  }\n\n  solve(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let l = this.L;\n    let dimension = l.rows;\n\n    if (value.rows !== dimension) {\n      throw new Error('Matrix dimensions do not match');\n    }\n    if (this.isPositiveDefinite() === false) {\n      throw new Error('Matrix is not positive definite');\n    }\n\n    let count = value.columns;\n    let B = value.clone();\n    let i, j, k;\n\n    for (k = 0; k < dimension; k++) {\n      for (j = 0; j < count; j++) {\n        for (i = 0; i < k; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    for (k = dimension - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        for (i = k + 1; i < dimension; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    return B;\n  }\n\n  get lowerTriangularMatrix() {\n    return this.L;\n  }\n}\n\nclass nipals {\n  constructor(X, options = {}) {\n    X = WrapperMatrix2D.checkMatrix(X);\n    let { Y } = options;\n    const {\n      scaleScores = false,\n      maxIterations = 1000,\n      terminationCriteria = 1e-10,\n    } = options;\n\n    let u;\n    if (Y) {\n      if (isAnyArray.isAnyArray(Y) && typeof Y[0] === 'number') {\n        Y = Matrix.columnVector(Y);\n      } else {\n        Y = WrapperMatrix2D.checkMatrix(Y);\n      }\n      if (Y.rows !== X.rows) {\n        throw new Error('Y should have the same number of rows as X');\n      }\n      u = Y.getColumnVector(0);\n    } else {\n      u = X.getColumnVector(0);\n    }\n\n    let diff = 1;\n    let t, q, w, tOld;\n\n    for (\n      let counter = 0;\n      counter < maxIterations && diff > terminationCriteria;\n      counter++\n    ) {\n      w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n      w = w.div(w.norm());\n\n      t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n      if (counter > 0) {\n        diff = t.clone().sub(tOld).pow(2).sum();\n      }\n      tOld = t.clone();\n\n      if (Y) {\n        q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n        q = q.div(q.norm());\n\n        u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n      } else {\n        u = t;\n      }\n    }\n\n    if (Y) {\n      let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      p = p.div(p.norm());\n      let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n      let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      let yResidual = Y.clone().sub(\n        t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n      );\n\n      this.t = t;\n      this.p = p.transpose();\n      this.w = w.transpose();\n      this.q = q;\n      this.u = u;\n      this.s = t.transpose().mmul(t);\n      this.xResidual = xResidual;\n      this.yResidual = yResidual;\n      this.betas = residual;\n    } else {\n      this.w = w.transpose();\n      this.s = t.transpose().mmul(t).sqrt();\n      if (scaleScores) {\n        this.t = t.clone().div(this.s.get(0, 0));\n      } else {\n        this.t = t;\n      }\n      this.xResidual = X.sub(t.mmul(w.transpose()));\n    }\n  }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n","import * as matrix from './matrix.js';\n\nexport const AbstractMatrix = matrix.AbstractMatrix;\nexport const CHO = matrix.CHO;\nexport const CholeskyDecomposition = matrix.CholeskyDecomposition;\nexport const DistanceMatrix = matrix.DistanceMatrix;\nexport const EVD = matrix.EVD;\nexport const EigenvalueDecomposition = matrix.EigenvalueDecomposition;\nexport const LU = matrix.LU;\nexport const LuDecomposition = matrix.LuDecomposition;\nexport const Matrix = matrix.Matrix;\nexport const MatrixColumnSelectionView = matrix.MatrixColumnSelectionView;\nexport const MatrixColumnView = matrix.MatrixColumnView;\nexport const MatrixFlipColumnView = matrix.MatrixFlipColumnView;\nexport const MatrixFlipRowView = matrix.MatrixFlipRowView;\nexport const MatrixRowSelectionView = matrix.MatrixRowSelectionView;\nexport const MatrixRowView = matrix.MatrixRowView;\nexport const MatrixSelectionView = matrix.MatrixSelectionView;\nexport const MatrixSubView = matrix.MatrixSubView;\nexport const MatrixTransposeView = matrix.MatrixTransposeView;\nexport const NIPALS = matrix.NIPALS;\nexport const Nipals = matrix.Nipals;\nexport const QR = matrix.QR;\nexport const QrDecomposition = matrix.QrDecomposition;\nexport const SVD = matrix.SVD;\nexport const SingularValueDecomposition = matrix.SingularValueDecomposition;\nexport const SymmetricMatrix = matrix.SymmetricMatrix;\nexport const WrapperMatrix1D = matrix.WrapperMatrix1D;\nexport const WrapperMatrix2D = matrix.WrapperMatrix2D;\nexport const correlation = matrix.correlation;\nexport const covariance = matrix.covariance;\nexport default matrix.default.Matrix ? matrix.default.Matrix : matrix.Matrix;\nexport const determinant = matrix.determinant;\nexport const inverse = matrix.inverse;\nexport const linearDependencies = matrix.linearDependencies;\nexport const pseudoInverse = matrix.pseudoInverse;\nexport const solve = matrix.solve;\nexport const wrap = matrix.wrap;\n","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the mean value of an array of values.\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 { isAnyArray } from 'is-any-array';\nimport { xMean } from \"./xMean.js\";\n/**\n * Finds the variance of the data\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 (const value of values) {\n        const x = value - 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.js\";\n/**\n * Finds the standard deviation for the data at hand\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 \"./xCheck.js\";\n/**\n * Returns a copy of the data as a Float64Array.\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","'use strict';\n\nfunction FFT(size) {\n  this.size = size | 0;\n  if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n    throw new Error('FFT size must be a power of two and bigger than 1');\n\n  this._csize = size << 1;\n\n  // NOTE: Use of `var` is intentional for old V8 versions\n  var table = new Array(this.size * 2);\n  for (var i = 0; i < table.length; i += 2) {\n    const angle = Math.PI * i / this.size;\n    table[i] = Math.cos(angle);\n    table[i + 1] = -Math.sin(angle);\n  }\n  this.table = table;\n\n  // Find size's power of two\n  var power = 0;\n  for (var t = 1; this.size > t; t <<= 1)\n    power++;\n\n  // Calculate initial step's width:\n  //   * If we are full radix-4 - it is 2x smaller to give inital len=8\n  //   * Otherwise it is the same as `power` to give len=4\n  this._width = power % 2 === 0 ? power - 1 : power;\n\n  // Pre-compute bit-reversal patterns\n  this._bitrev = new Array(1 << this._width);\n  for (var j = 0; j < this._bitrev.length; j++) {\n    this._bitrev[j] = 0;\n    for (var shift = 0; shift < this._width; shift += 2) {\n      var revShift = this._width - shift - 2;\n      this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n    }\n  }\n\n  this._out = null;\n  this._data = null;\n  this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n  var res = storage || new Array(complex.length >>> 1);\n  for (var i = 0; i < complex.length; i += 2)\n    res[i >>> 1] = complex[i];\n  return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n  const res = new Array(this._csize);\n  for (var i = 0; i < res.length; i++)\n    res[i] = 0;\n  return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n  var res = storage || this.createComplexArray();\n  for (var i = 0; i < res.length; i += 2) {\n    res[i] = input[i >>> 1];\n    res[i + 1] = 0;\n  }\n  return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n  var size = this._csize;\n  var half = size >>> 1;\n  for (var i = 2; i < half; i += 2) {\n    spectrum[size - i] = spectrum[i];\n    spectrum[size - i + 1] = -spectrum[i + 1];\n  }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._transform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._realTransform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 1;\n  this._transform4();\n  for (var i = 0; i < out.length; i++)\n    out[i] /= this.size;\n  this._out = null;\n  this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform2(outOff, off, step);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform4(outOff, off, step);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var quarterLen = len >>> 2;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      // Full case\n      var limit = outOff + quarterLen;\n      for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n        const A = i;\n        const B = A + quarterLen;\n        const C = B + quarterLen;\n        const D = C + quarterLen;\n\n        // Original values\n        const Ar = out[A];\n        const Ai = out[A + 1];\n        const Br = out[B];\n        const Bi = out[B + 1];\n        const Cr = out[C];\n        const Ci = out[C + 1];\n        const Dr = out[D];\n        const Di = out[D + 1];\n\n        // Middle values\n        const MAr = Ar;\n        const MAi = Ai;\n\n        const tableBr = table[k];\n        const tableBi = inv * table[k + 1];\n        const MBr = Br * tableBr - Bi * tableBi;\n        const MBi = Br * tableBi + Bi * tableBr;\n\n        const tableCr = table[2 * k];\n        const tableCi = inv * table[2 * k + 1];\n        const MCr = Cr * tableCr - Ci * tableCi;\n        const MCi = Cr * tableCi + Ci * tableCr;\n\n        const tableDr = table[3 * k];\n        const tableDi = inv * table[3 * k + 1];\n        const MDr = Dr * tableDr - Di * tableDi;\n        const MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        const T0r = MAr + MCr;\n        const T0i = MAi + MCi;\n        const T1r = MAr - MCr;\n        const T1i = MAi - MCi;\n        const T2r = MBr + MDr;\n        const T2i = MBi + MDi;\n        const T3r = inv * (MBr - MDr);\n        const T3i = inv * (MBi - MDi);\n\n        // Final values\n        const FAr = T0r + T2r;\n        const FAi = T0i + T2i;\n\n        const FCr = T0r - T2r;\n        const FCi = T0i - T2i;\n\n        const FBr = T1r + T3i;\n        const FBi = T1i - T3r;\n\n        const FDr = T1r - T3i;\n        const FDi = T1i + T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n        out[C] = FCr;\n        out[C + 1] = FCi;\n        out[D] = FDr;\n        out[D + 1] = FDi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const evenI = data[off + 1];\n  const oddR = data[off + step];\n  const oddI = data[off + step + 1];\n\n  const leftR = evenR + oddR;\n  const leftI = evenI + oddI;\n  const rightR = evenR - oddR;\n  const rightI = evenI - oddI;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = leftI;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Ai = data[off + 1];\n  const Br = data[off + step];\n  const Bi = data[off + step + 1];\n  const Cr = data[off + step2];\n  const Ci = data[off + step2 + 1];\n  const Dr = data[off + step3];\n  const Di = data[off + step3 + 1];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T0i = Ai + Ci;\n  const T1r = Ar - Cr;\n  const T1i = Ai - Ci;\n  const T2r = Br + Dr;\n  const T2i = Bi + Di;\n  const T3r = inv * (Br - Dr);\n  const T3i = inv * (Bi - Di);\n\n  // Final values\n  const FAr = T0r + T2r;\n  const FAi = T0i + T2i;\n\n  const FBr = T1r + T3i;\n  const FBi = T1i - T3r;\n\n  const FCr = T0r - T2r;\n  const FCi = T0i - T2i;\n\n  const FDr = T1r - T3i;\n  const FDi = T1i + T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = FAi;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = FCi;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var halfLen = len >>> 1;\n    var quarterLen = halfLen >>> 1;\n    var hquarterLen = quarterLen >>> 1;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n        var A = outOff + i;\n        var B = A + quarterLen;\n        var C = B + quarterLen;\n        var D = C + quarterLen;\n\n        // Original values\n        var Ar = out[A];\n        var Ai = out[A + 1];\n        var Br = out[B];\n        var Bi = out[B + 1];\n        var Cr = out[C];\n        var Ci = out[C + 1];\n        var Dr = out[D];\n        var Di = out[D + 1];\n\n        // Middle values\n        var MAr = Ar;\n        var MAi = Ai;\n\n        var tableBr = table[k];\n        var tableBi = inv * table[k + 1];\n        var MBr = Br * tableBr - Bi * tableBi;\n        var MBi = Br * tableBi + Bi * tableBr;\n\n        var tableCr = table[2 * k];\n        var tableCi = inv * table[2 * k + 1];\n        var MCr = Cr * tableCr - Ci * tableCi;\n        var MCi = Cr * tableCi + Ci * tableCr;\n\n        var tableDr = table[3 * k];\n        var tableDi = inv * table[3 * k + 1];\n        var MDr = Dr * tableDr - Di * tableDi;\n        var MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        var T0r = MAr + MCr;\n        var T0i = MAi + MCi;\n        var T1r = MAr - MCr;\n        var T1i = MAi - MCi;\n        var T2r = MBr + MDr;\n        var T2i = MBi + MDi;\n        var T3r = inv * (MBr - MDr);\n        var T3i = inv * (MBi - MDi);\n\n        // Final values\n        var FAr = T0r + T2r;\n        var FAi = T0i + T2i;\n\n        var FBr = T1r + T3i;\n        var FBi = T1i - T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n\n        // Output final middle point\n        if (i === 0) {\n          var FCr = T0r - T2r;\n          var FCi = T0i - T2i;\n          out[C] = FCr;\n          out[C + 1] = FCi;\n          continue;\n        }\n\n        // Do not overwrite ourselves\n        if (i === hquarterLen)\n          continue;\n\n        // In the flipped case:\n        // MAi = -MAi\n        // MBr=-MBi, MBi=-MBr\n        // MCr=-MCr\n        // MDr=MDi, MDi=MDr\n        var ST0r = T1r;\n        var ST0i = -T1i;\n        var ST1r = T0r;\n        var ST1i = -T0i;\n        var ST2r = -inv * T3i;\n        var ST2i = -inv * T3r;\n        var ST3r = -inv * T2i;\n        var ST3i = -inv * T2r;\n\n        var SFAr = ST0r + ST2r;\n        var SFAi = ST0i + ST2i;\n\n        var SFBr = ST1r + ST3i;\n        var SFBi = ST1i - ST3r;\n\n        var SA = outOff + quarterLen - i;\n        var SB = outOff + halfLen - i;\n\n        out[SA] = SFAr;\n        out[SA + 1] = SFAi;\n        out[SB] = SFBr;\n        out[SB + 1] = SFBi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const oddR = data[off + step];\n\n  const leftR = evenR + oddR;\n  const rightR = evenR - oddR;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Br = data[off + step];\n  const Cr = data[off + step2];\n  const Dr = data[off + step3];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T1r = Ar - Cr;\n  const T2r = Br + Dr;\n  const T3r = inv * (Br - Dr);\n\n  // Final values\n  const FAr = T0r + T2r;\n\n  const FBr = T1r;\n  const FBi = -T3r;\n\n  const FCr = T0r - T2r;\n\n  const FDr = T1r;\n  const FDi = T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = 0;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n","export function createNumberArray(ArrayConstructor, length) {\n    if (ArrayConstructor === Array) {\n        return new ArrayConstructor(length).fill(0);\n    }\n    else {\n        return new ArrayConstructor(length);\n    }\n}\nexport function createDoubleArray(ArrayConstructor, length) {\n    if (ArrayConstructor === Array) {\n        return new ArrayConstructor(length).fill(0);\n    }\n    else {\n        return new ArrayConstructor(length);\n    }\n}\n//# sourceMappingURL=createArray.js.map","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n * @param options - options\n * @returns - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    const { 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 && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    const delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\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        const base = (to / from) ** (1 / div);\n        const firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\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('distribution must be uniform or log');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(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=xSubtract.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the maximal value of an array of values\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.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the minimal value of an array of values.\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 * @param array - Monotone growing array of number\n * @param options\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        const 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 monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\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 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","import { xMedian } from \"./xMedian.js\";\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.js\";\n/**\n * Return min and max values of an array.\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 (const 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","/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, 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\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/* eslint-disable no-loss-of-precision */\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n    -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n    2.19878681111168899165e-2, -3.65637971411762664006e-2,\n    -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n    -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n    8.86216390456424707504e-4, -2.33393759374190016776e-3,\n    7.95283687341571680018e-2, -5.27396382340099713954e-2,\n    -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n    -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n    -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n    -4.46382324441786960818e1, -1.88510648058714251895e1,\n    1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n    -2.02433508355938759655e-1,\n];\nconst Q2 = [\n    1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n    4.85609213108739935468e1, -2.01432634680485188801e1,\n    -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n    -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n    -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n    2.90157910005329060432e-2, 1.42869534408157156766e-1,\n    3.37785538912035898924e-1, 3.87079738972604337464e-1,\n    1.17030156341995252019e-1, -1.63794047193317060787e-1,\n    -1.31102781679951906451e-1,\n];\nconst Q3 = [\n    1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n    2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n    3.46625407242567245975, 1,\n];\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n    2.66339227425782031962e-12, -2.30404776911882601748e-10,\n    4.60469890584317994083e-6, 1.57544617424960554631e-4,\n    1.87123492819559223345e-3, 9.50804701325919603619e-3,\n    1.85573306514231072324e-2, -2.22426529213447927281e-3,\n    -3.50353787183177984712e-2,\n];\nconst Q4 = [\n    7.64675292302794483503e-5, 2.63861676657015992959e-3,\n    3.41589143670947727934e-2, 2.20091105764131249824e-1,\n    7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n    9.9055709973310326855e-17, -2.81128735628831791805e-14,\n    4.62596163522878599135e-9, 4.49696789927706453732e-7,\n    1.49624783758342370182e-5, 2.09386317487588078668e-4,\n    1.05628862152492910091e-3, -1.12951438745580278863e-3,\n    -1.67431005076633737133e-2,\n];\nconst Q5 = [\n    2.82243172016108031869e-7, 2.75335474764726041141e-5,\n    9.64011807005165528527e-4, 1.60746087093676504695e-2,\n    1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n/**\n * Polyval.\n * @param c - Array of Number.\n * @param x - Number.\n * @returns Number.\n */\nfunction polyval(c, x) {\n    let p = 0;\n    for (const coef of c) {\n        p = p * x + coef;\n    }\n    return p;\n}\n/**\n * Calculates a rational approximation.\n * @private\n * @param x - Number.\n * @param v - Number.\n * @param P - Array of polynomial coefficients.\n * @param Q - Array of polynomial coefficients.\n * @param Y - Number.\n * @returns Rational approximation.\n */\nfunction calc(x, v, P, Q, Y) {\n    const s = x - v;\n    const r = polyval(P, s) / polyval(Q, s);\n    return Y * x + r * x;\n}\n/**\n * Evaluates the complementary inverse error function for an input value.\n * @private\n * @param x - Input value.\n * @returns Evaluated complementary inverse error function.\n */\nexport default function erfcinv(x) {\n    let sign = false;\n    let val;\n    let q;\n    let g;\n    let r;\n    // [1] Special cases...\n    // NaN:\n    if (Number.isNaN(x)) {\n        return Number.NaN;\n    }\n    // x not on the interval: [0,2]\n    if (x < 0 || x > 2) {\n        throw new RangeError(`erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`);\n    }\n    if (x === 0) {\n        return Number.POSITIVE_INFINITY;\n    }\n    if (x === 2) {\n        return Number.NEGATIVE_INFINITY;\n    }\n    if (x === 1) {\n        return 0;\n    }\n    // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n    if (x > 1) {\n        q = 2 - x;\n        x = 1 - q;\n        sign = true;\n    }\n    else {\n        q = x;\n        x = 1 - x;\n    }\n    // [3] |x| <= 0.5\n    if (x <= 0.5) {\n        g = x * (x + 10);\n        r = polyval(P1, x) / polyval(Q1, x);\n        val = g * Y1 + g * r;\n        return sign ? -val : val;\n    }\n    // [4] 1-|x| >= 0.25\n    if (q >= 0.25) {\n        g = Math.sqrt(-2 * Math.log(q));\n        q = q - 0.25;\n        r = polyval(P2, q) / polyval(Q2, q);\n        val = g / (Y2 + r);\n        return sign ? -val : val;\n    }\n    q = Math.sqrt(-Math.log(q));\n    // [5] q < 3\n    if (q < 3) {\n        return calc(q, 1.125, P3, Q3, Y3);\n    }\n    // [6] q < 6\n    if (q < 6) {\n        return calc(q, 3, P4, Q4, Y4);\n    }\n    // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n    return calc(q, 6, P5, Q5, Y5);\n    // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n//# sourceMappingURL=erfcinv.js.map","import erfcinv from \"./erfcinv.js\";\n/**\n * Applies a simple normalization inverse transformation to the input data.\n * @param data - The input array of numbers to be transformed.\n * @param options - Optional parameters for the transformation.\n * @returns A new Float64Array containing the transformed data.\n */\nexport function simpleNormInv(data, options = {}) {\n    const { magnitudeMode = false } = options;\n    const result = new Float64Array(data.length);\n    if (magnitudeMode) {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -Math.sqrt(-2 * Math.log(1 - data[i]));\n        }\n    }\n    else {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n        }\n    }\n    return result;\n}\n/**\n * Convenience wrapper for single number processing by simpleNormInv function.\n * @param data - The number to be normalized.\n * @param options - The options for the normalization process.\n * @returns The normalized number.\n */\nexport function simpleNormInvNumber(data, options = {}) {\n    return simpleNormInv([data], options)[0];\n}\n//# sourceMappingURL=simpleNormInv.js.map","import { isAnyArray } from 'is-any-array';\nimport { createFromToArray } from \"../utils/index.js\";\nimport { simpleNormInvNumber } from \"./utils/simpleNormInv.js\";\nimport { xEnsureFloat64 } from \"./xEnsureFloat64.js\";\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param array - real or magnitude spectra data.\n * @param options - options\n * @returns noise level\n */\nexport function xNoiseSanPlot(array, options = {}) {\n    const { mask, cutOff, refine = true, magnitudeMode = false, scaleFactor = 1, factorStd = 5, fixOffset = true, } = options;\n    const input = prepareData(array, { scaleFactor, mask });\n    if (fixOffset && !magnitudeMode) {\n        const medianIndex = Math.floor(input.length / 2);\n        const median = input.length % 2 === 0\n            ? 0.5 * (input[medianIndex - 1] + input[medianIndex])\n            : input[medianIndex];\n        for (let i = 0; i < input.length; i++) {\n            input[i] -= median;\n        }\n    }\n    const firstNegativeValueIndex = input.at(-1) >= 0\n        ? input.length\n        : input.findIndex((e) => e < 0);\n    let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n    for (let i = lastPositiveValueIndex; i >= 0; i--) {\n        if (input[i] > 0) {\n            lastPositiveValueIndex = i;\n            break;\n        }\n    }\n    const signPositive = input.slice(0, lastPositiveValueIndex + 1);\n    const signNegative = input.slice(firstNegativeValueIndex);\n    const cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n    const pIndex = Math.floor(signPositive.length * cutOffDist);\n    const initialNoiseLevelPositive = signPositive[pIndex];\n    const skyPoint = signPositive[0];\n    let initialNoiseLevelNegative;\n    if (signNegative.length > 0) {\n        const nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n        initialNoiseLevelNegative = -1 * signNegative[nIndex];\n    }\n    else {\n        initialNoiseLevelNegative = 0;\n    }\n    let noiseLevelPositive = initialNoiseLevelPositive;\n    let noiseLevelNegative = initialNoiseLevelNegative;\n    let cloneSignPositive = signPositive.slice();\n    let cloneSignNegative = signNegative.slice();\n    let cutOffSignalsIndexPlus = 0;\n    let cutOffSignalsIndexNeg = 2;\n    if (refine) {\n        let cutOffSignals = noiseLevelPositive * factorStd;\n        cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexPlus > -1) {\n            cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n            noiseLevelPositive =\n                cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n        }\n        cutOffSignals = noiseLevelNegative * factorStd;\n        cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexNeg > -1) {\n            cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n            noiseLevelNegative =\n                cloneSignPositive[Math.floor(cloneSignNegative.length * (1 - cutOffDist))];\n        }\n    }\n    const correctionFactor = -simpleNormInvNumber(cutOffDist / 2, {\n        magnitudeMode,\n    });\n    let effectiveCutOffDist, refinedCorrectionFactor;\n    if (refine && cutOffSignalsIndexPlus > -1) {\n        effectiveCutOffDist =\n            (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n                (cloneSignPositive.length + cutOffSignalsIndexPlus);\n        refinedCorrectionFactor =\n            -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n        noiseLevelPositive /= refinedCorrectionFactor;\n        if (cutOffSignalsIndexNeg > -1) {\n            effectiveCutOffDist =\n                (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n                    (cloneSignNegative.length + cutOffSignalsIndexNeg);\n            refinedCorrectionFactor =\n                -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n            if (noiseLevelNegative !== 0) {\n                noiseLevelNegative /= refinedCorrectionFactor;\n            }\n        }\n    }\n    else {\n        noiseLevelPositive /= correctionFactor;\n        noiseLevelNegative /= correctionFactor;\n    }\n    return {\n        positive: noiseLevelPositive,\n        negative: noiseLevelNegative,\n        snr: skyPoint / noiseLevelPositive,\n        sanplot: generateSanPlot(input, {\n            fromTo: {\n                positive: { from: 0, to: lastPositiveValueIndex },\n                negative: { from: firstNegativeValueIndex, to: input.length },\n            },\n        }),\n    };\n}\n/**\n * Determines the optimal cut-off point for a given array of positive numbers.\n * @param signPositive - An array of positive numbers.\n * @param options - Optional parameters to configure the cut-off determination.\n * @param options.magnitudeMode - If true, uses magnitude mode for normalization. Default is false.\n * @param options.considerList - An object specifying the range and step for consideration.\n * @param options.considerList.from - The starting point of the range. Default is 0.5.\n * @param options.considerList.step - The step size for the range. Default is 0.1.\n * @param options.considerList.to - The ending point of the range. Default is 0.9.\n * @returns The optimal cut-off point as a number.\n */\nfunction determineCutOff(signPositive, options = {}) {\n    const { magnitudeMode = false, considerList = { from: 0.5, step: 0.1, to: 0.9 }, } = options;\n    //generate a list of values for\n    const cutOff = [];\n    const indexMax = signPositive.length - 1;\n    for (let i = 0.01; i <= 0.99; i += 0.01) {\n        const index = Math.round(indexMax * i);\n        const value = -signPositive[index] / simpleNormInvNumber(i / 2, { magnitudeMode });\n        cutOff.push([i, value]);\n    }\n    let minKi = Number.MAX_SAFE_INTEGER;\n    const { from, to, step } = considerList;\n    const delta = step / 2;\n    let whereToCutStat = 0.5;\n    for (let i = from; i <= to; i += step) {\n        const floor = i - delta;\n        const top = i + delta;\n        const elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n        let averageValue = 0;\n        for (const element of elementsOfCutOff) {\n            averageValue += Math.abs(element[1]);\n        }\n        let kiSqrt = 0;\n        for (const element of elementsOfCutOff) {\n            kiSqrt += (element[1] - averageValue) ** 2;\n        }\n        if (kiSqrt < minKi) {\n            minKi = kiSqrt;\n            whereToCutStat = i;\n        }\n    }\n    return whereToCutStat;\n}\n/**\n * Generates a SAN plot from the given array based on the specified options.\n * @param array - The input array of numbers to be processed.\n * @param options - An optional object containing configuration options.\n * @param options.logBaseY - The logarithmic base for the Y-axis. Defaults to 2.\n * @param options.fromTo - An object specifying the range for each key. Each key maps to an object with `from` and `to` properties.\n * @returns An object where each key maps to a DataXY object containing the processed data.\n */\nfunction generateSanPlot(array, options = {}) {\n    const { fromTo, logBaseY = 2 } = options;\n    const sanplot = {};\n    for (const key in fromTo) {\n        const { from, to } = fromTo[key];\n        sanplot[key] =\n            from !== to\n                ? scale(array.slice(from, to), {\n                    logBaseY,\n                })\n                : { x: [], y: [] };\n        if (key === 'negative') {\n            sanplot[key].y.reverse();\n        }\n    }\n    return sanplot;\n}\n/**\n * Scales the input array based on the provided options.\n * @param array - The input array to be scaled.\n * @param options - An optional object containing scaling options.\n * @param options.logBaseY - If provided, the array values will be scaled using the logarithm of this base.\n * @returns An object containing the scaled x and y arrays.\n */\nfunction scale(array, options = {}) {\n    const { log10, abs } = Math;\n    const { logBaseY } = options;\n    if (logBaseY) {\n        array = array.slice(0);\n        const logOfBase = log10(logBaseY);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = log10(abs(array[i])) / logOfBase;\n        }\n    }\n    const xAxis = createFromToArray({\n        from: 0,\n        to: array.length - 1,\n        length: array.length,\n    });\n    return { x: xAxis, y: array };\n}\n/**\n * Prepares and processes the input data array based on the provided options.\n * @param array - The input array of numbers to be processed.\n * @param options - An object containing the following properties:\n *   - scaleFactor: A number by which to scale each element of the array.\n *   - mask: An optional array of the same length as the input array, where\n *           elements corresponding to `true` values will be excluded from processing.\n * @param options.scaleFactor\n * @param options.mask\n * @returns A new Float64Array containing the processed data, scaled by the\n *          scaleFactor and sorted in descending order.\n */\nfunction prepareData(array, options) {\n    const { scaleFactor, mask } = options;\n    const input = xEnsureFloat64(isAnyArray(mask) && mask.length === array.length\n        ? array.filter((_e, i) => !mask[i])\n        : array);\n    if (scaleFactor > 1) {\n        for (let i = 0; i < input.length; i++) {\n            input[i] *= scaleFactor;\n        }\n    }\n    input.sort();\n    input.reverse();\n    return input;\n}\n//# sourceMappingURL=xNoiseSanPlot.js.map","import { xMedianAbsoluteDeviation } from \"./xMedianAbsoluteDeviation.js\";\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.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Calculate the sum of the values\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 \"./getOutputArray.js\";\nimport { xCheck } from \"./xCheck.js\";\nimport { xMaxValue } from \"./xMaxValue.js\";\nimport { xSum } from \"./xSum.js\";\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param input - 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) {\n        case 'absolute': {\n            const absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('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            const currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('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            const sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('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(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (const value of input) {\n        sumValue += Math.abs(value);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xEnsureFloat64 } from \"./xEnsureFloat64.js\";\n/**\n * This function pads an array\n *s\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        return xEnsureFloat64(array);\n    }\n    const result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    const fromEnd = size + array.length;\n    const toEnd = 2 * size + array.length;\n    switch (algorithm) {\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.at(-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 new Error(`unknown algorithm ${String(algorithm)}`);\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xStandardDeviation } from \"./xStandardDeviation.js\";\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    const result = new Float64Array(array.length);\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let i = 0; i < array.length; i++) {\n        result[i] = array[i] / sqrtSD;\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { getOutputArray } from \"./getOutputArray.js\";\nimport { xCheck } from \"./xCheck.js\";\nimport { xMaxValue } from \"./xMaxValue.js\";\nimport { xMinValue } from \"./xMinValue.js\";\n/**\n * Function used to rescale data\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 { xCheck } from \"./xCheck.js\";\nimport { xPadding } from \"./xPadding.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\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 new TypeError('fct must be a function');\n    }\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    const padded = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < padded.length - window + 1; i++) {\n        // we will send a view to the original buffer\n        newArray.push(fct(padded.subarray(i, i + window)));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import { xMean } from \"./xMean.js\";\nimport { xRolling } from \"./xRolling.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, xMean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import { xMedian } from \"./xMedian.js\";\nimport { xRolling } from \"./xRolling.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, xMedian, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { createNumberArray } from \"../utils/index.js\";\n/**\n * Create a new matrix based on the size of the current one or by using specific dimensions.\n * @param options\n */\nexport function matrixCreateEmpty(options) {\n    const { matrix, nbRows = matrix?.length || 1, nbColumns = matrix?.[0].length || 1, ArrayConstructor = Float64Array, } = options;\n    const newMatrix = [];\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix.push(createNumberArray(ArrayConstructor, nbColumns));\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCreateEmpty.js.map","import { xCorrelation } from \"../x/index.js\";\nexport function matrixAutoCorrelation(matrix, index = 0) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    if (nbRows < 2) {\n        throw new Error('can not calculate info if matrix contains less than 2 rows');\n    }\n    const targetArray = new Float64Array(nbRows);\n    const sourceArray = new Float64Array(nbRows);\n    const result = new Float64Array(nbColumns);\n    for (let j = 0; j < nbRows; j++) {\n        targetArray[j] = matrix[j][index];\n    }\n    for (let i = 0; i < nbColumns; i++) {\n        for (let j = 0; j < nbRows; j++) {\n            sourceArray[j] = matrix[j][i];\n        }\n        result[i] = xCorrelation(targetArray, sourceArray);\n    }\n    return result;\n}\n//# sourceMappingURL=matrixAutoCorrelation.js.map","export function matrixBoxPlot(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    if (nbRows < 5) {\n        throw new Error('can not calculate info if matrix contains less than 5 rows');\n    }\n    const info = {\n        q1: new Float64Array(nbColumns),\n        median: new Float64Array(nbColumns),\n        q3: new Float64Array(nbColumns),\n        min: Float64Array.from(matrix[0]),\n        max: Float64Array.from(matrix.at(-1)),\n    };\n    const columnArray = new Float64Array(matrix.length);\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            columnArray[row] = matrix[row][column];\n        }\n        let q1max = 0;\n        let q3min = 0;\n        if (nbRows % 2 === 1) {\n            // odd\n            const middle = (nbRows - 1) / 2;\n            info.median[column] = columnArray[middle];\n            q1max = middle - 1;\n            q3min = middle + 1;\n        }\n        else {\n            // even\n            q3min = nbRows / 2;\n            q1max = q3min - 1;\n            info.median[column] = (columnArray[q1max] + columnArray[q3min]) / 2;\n        }\n        if (q1max % 2 === 0) {\n            info.q1[column] = columnArray[q1max / 2];\n            info.q3[column] = columnArray[(nbRows + q3min - 1) / 2];\n        }\n        else {\n            info.q1[column] =\n                (columnArray[(q1max + 1) / 2] + columnArray[(q1max - 1) / 2]) / 2;\n            const middleOver = (columnArray.length + q3min) / 2;\n            info.q3[column] =\n                (columnArray[middleOver] + columnArray[middleOver - 1]) / 2;\n        }\n    }\n    return info;\n}\n//# sourceMappingURL=matrixBoxPlot.js.map","import { matrixCreateEmpty } from \"./matrixCreateEmpty.js\";\n/**\n * Center mean of matrix columns.\n * @param matrix - matrix [rows][cols]\n */\nexport function matrixCenterZMean(matrix) {\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows });\n    for (let column = 0; column < nbColumns; column++) {\n        let mean = 0;\n        for (let row = 0; row < nbRows; row++) {\n            mean += matrix[row][column];\n        }\n        mean /= nbRows;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] - mean;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCenterZMean.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix must 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 must has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","import { matrixCheck } from \"./matrixCheck.js\";\n/**\n * Get min and max Z.\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 { Matrix } from 'ml-matrix';\nimport { xMedian } from \"../x/index.js\";\n/**\n * Performs a Probabilistic quotient normalization (PQN) over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - {data: Normalized dataset, medianOfQuotients: The median of quotients of each variables}\n */\nexport function matrixPQN(matrix, options = {}) {\n    const { max = 100 } = options;\n    const matrixB = new Matrix(matrix);\n    for (let i = 0; i < matrixB.rows; i++) {\n        const normalizationFactor = matrixB.getRowVector(i).norm('frobenius') / max;\n        const row = matrixB.getRowVector(i).div(normalizationFactor);\n        matrixB.setRow(i, row);\n    }\n    const referenceSpectrum = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const currentVariable = matrixB.getColumn(i);\n        referenceSpectrum.push(xMedian(currentVariable));\n    }\n    const medianOfQuotients = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const quotients = matrixB.getColumnVector(i).div(referenceSpectrum[i]);\n        medianOfQuotients.push(xMedian(quotients.getColumn(0)));\n    }\n    for (let i = 0; i < matrixB.rows; i++) {\n        matrixB.mulRow(i, 1 / medianOfQuotients[i]);\n    }\n    return {\n        data: matrixB.to2DArray(),\n        medianOfQuotients,\n    };\n}\n//# sourceMappingURL=matrixPQN.js.map","import { matrixCreateEmpty } from \"./matrixCreateEmpty.js\";\nimport { matrixMinMaxZ } from \"./matrixMinMaxZ.js\";\n/**\n * Rescale a matrix between min and max values.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZRescale(matrix, options = {}) {\n    const { min = 0, max = 1, ArrayConstructor } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows, ArrayConstructor });\n    const { min: currentMin, max: currentMax } = matrixMinMaxZ(matrix);\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescale.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Verify that `data` is an object of x,y arrays.\n * Throws an error if it's not.\n * @param data\n * @param options\n * @param options.minLength\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (data === null ||\n        typeof data !== 'object' ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.x) ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.y)) {\n        throw new Error('data must be an object of x and y arrays');\n    }\n    // @ts-expect-error Typechecking\n    if (data.x.length !== data.y.length) {\n        throw new Error('the x and y arrays must have the same length');\n    }\n    // @ts-expect-error Typechecking\n    if (minLength && data.x.length < minLength) {\n        throw new Error(`data.x must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xGetFromToIndex } from \"../x/index.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMaxYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1) {\n        return { x: x[0], y: y[0], index: 0 };\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMaxYPoint.js.map","import { xIsMonotonic } from \"../x/index.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Filters x,y values to allow strictly growing values in x-axis.\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 (xIsMonotonic(data.x) === 1)\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    const { exclusions = [] } = options;\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = zones.map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : { ...zone });\n    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    for (const zone of zones) {\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    const beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        const 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    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\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.js\";\n/**\n * Add the number of points per zone to reach a specified total\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 [];\n    const normalizedZones = zonesNormalize(zones, options);\n    const zonesWithNumberOfPoints = [];\n    const totalSize = normalizedZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    const unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < normalizedZones.length - 1; i++) {\n        const tempZone = normalizedZones[i];\n        const tempZoneNumberOfPoints = Math.min(Math.round((tempZone.to - tempZone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        zonesWithNumberOfPoints.push({\n            ...tempZone,\n            numberOfPoints: tempZoneNumberOfPoints,\n        });\n        currentTotal += tempZoneNumberOfPoints;\n    }\n    zonesWithNumberOfPoints.push({\n        ...normalizedZones.at(-1),\n        numberOfPoints: numberOfPoints - currentTotal,\n    });\n    return zonesWithNumberOfPoints;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * Function that retrieves the getEquallySpacedData with the variant \"slot\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns 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    const xLength = x.length;\n    if (xLength < 2) {\n        return Float64Array.from(x);\n    }\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    const lastStep = x.at(-1) - x.at(-2);\n    const start = from - halfStep;\n    // Changed Array to Float64Array\n    const 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 * @returns 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.js\";\n/**\n * Function that retrieves the getEquallySpacedData with the variant \"smooth\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns - 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    const xLength = x.length;\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    const initialOriginalStep = x[1] - x[0];\n    const 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    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}\nfunction getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from \"../utils/index.js\";\nimport { zonesNormalize, zonesWithPoints } from \"../zones/index.js\";\nimport equallySpacedSlot from \"./utils/equallySpacedSlot.js\";\nimport equallySpacedSmooth from \"./utils/equallySpacedSmooth.js\";\nimport { xyCheck } from \"./xyCheck.js\";\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 * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    const { x, y } = data;\n    const 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    }).filter((zone) => zone.numberOfPoints);\n    let xResult = [];\n    let yResult = [];\n    for (const zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        const 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    const 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/index.js\";\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    if (x.length === 0) {\n        return {\n            x: Array.from(x),\n            y: Array.from(y),\n        };\n    }\n    const { from = x[0], to = x.at(-1), zones = [{ from, to }], exclusions = [], } = options;\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    const newX = [];\n    const 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 if (x[position] > normalizedZones[currentZoneIndex].to) {\n            currentZoneIndex++;\n            if (!normalizedZones[currentZoneIndex])\n                break;\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","/**\n * Order object of array, x has to be monotone. Ensure x is growing\n * @param data - Object of kind {x:[], y:[]}.\n */\nexport function xyGrowingX(data) {\n    const { x, y } = data;\n    if (x.length !== y.length) {\n        throw new TypeError('length of x and y must be identical');\n    }\n    if (x.length < 2 || x[0] < x.at(-1))\n        return data;\n    return {\n        x: x.toReversed(),\n        y: y.toReversed(),\n    };\n}\n//# sourceMappingURL=xyGrowingX.js.map","import { xGetFromToIndex } from \"../x/index.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Calculate integration\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - xyIntegration value on the specified range\n */\nexport function xyIntegration(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return 0;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyIntegration = 0;\n    for (let i = fromIndex; i < toIndex; i++) {\n        currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n    }\n    return currentxyIntegration;\n}\n//# sourceMappingURL=xyIntegration.js.map","import { xGetFromToIndex } from \"../x/index.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Finds the min y value in a range and return a {x,y} point\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMinYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return { x: x[0], y: y[0], index: 0 };\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = {\n        x: x[fromIndex],\n        y: y[fromIndex],\n        index: fromIndex,\n    };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] < current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMinYPoint.js.map","import { xIsMonotonic } from \"../x/index.js\";\n/**\n * This function performs a quick sort of the x array while transforming the y array to preserve the coordinates.\n * @param data - Object that contains property x (Array) and y (Array)\n */\nexport function xySortX(data) {\n    const { x, y } = data;\n    if (xIsMonotonic(x) && x.length > 1) {\n        const floatX = Float64Array.from(x);\n        const floatY = Float64Array.from(y);\n        if (floatX.at(-1) < floatX[0]) {\n            floatX.reverse();\n            floatY.reverse();\n        }\n        return {\n            x: floatX,\n            y: floatY,\n        };\n    }\n    const xyObject = Array.from(x, (val, index) => ({\n        x: val,\n        y: y[index],\n    }));\n    xyObject.sort((a, b) => a.x - b.x);\n    const response = {\n        x: new Float64Array(x.length),\n        y: new Float64Array(y.length),\n    };\n    for (let i = 0; i < x.length; i++) {\n        response.x[i] = xyObject[i].x;\n        response.y[i] = xyObject[i].y;\n    }\n    return response;\n}\n//# sourceMappingURL=xySortX.js.map","import { xyCheck } from \"./xyCheck.js\";\nimport { xySortX } from \"./xySortX.js\";\n/**\n * Ensure x values are unique\n * @param data - Object that contains property x (Array) and y (Array)\n * @param options - Object containing a property algorithm (can be 'sum' or 'average', the latter being the default value), and a property isSorted (boolean indicating if the x-array is sorted).\n */\nexport function xyUniqueX(data, options = {}) {\n    xyCheck(data);\n    if (data.x.length === 0) {\n        return { x: [], y: [] };\n    }\n    const { algorithm = 'average', isSorted = true } = options;\n    if (!isSorted) {\n        data = xySortX(data);\n    }\n    switch (algorithm) {\n        case 'average':\n            return average(data);\n        case 'sum':\n            return sum(data);\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\n/**\n * Average.\n * @param data - Input.\n * @returns Result.\n */\nfunction average(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    let divider = 1;\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY / divider);\n            cumulativeY = 0;\n            divider = 0;\n        }\n        cumulativeY += data.y[i];\n        divider++;\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY / divider);\n    return { x, y };\n}\n/**\n * Sum.\n * @param data - Input.\n * @returns Result.\n */\nfunction sum(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY);\n            cumulativeY = 0;\n        }\n        cumulativeY += data.y[i];\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY);\n    return { x, y };\n}\n//# sourceMappingURL=xyUniqueX.js.map","const { min, max } = Math;\n\nexport default (x, low = 0, high = 1) => {\n    return min(max(low, x), high);\n};\n","import limit from './limit.js';\n\nexport default (rgb) => {\n    rgb._clipped = false;\n    rgb._unclipped = rgb.slice(0);\n    for (let i = 0; i <= 3; i++) {\n        if (i < 3) {\n            if (rgb[i] < 0 || rgb[i] > 255) rgb._clipped = true;\n            rgb[i] = limit(rgb[i], 0, 255);\n        } else if (i === 3) {\n            rgb[i] = limit(rgb[i], 0, 1);\n        }\n    }\n    return rgb;\n};\n","// ported from jQuery's $.type\nconst classToType = {};\nfor (let name of [\n    'Boolean',\n    'Number',\n    'String',\n    'Function',\n    'Array',\n    'Date',\n    'RegExp',\n    'Undefined',\n    'Null'\n]) {\n    classToType[`[object ${name}]`] = name.toLowerCase();\n}\nexport default function (obj) {\n    return classToType[Object.prototype.toString.call(obj)] || 'object';\n}\n","import type from './type.js';\n\nexport default (args, keyOrder = null) => {\n    // if called with more than 3 arguments, we return the arguments\n    if (args.length >= 3) return Array.prototype.slice.call(args);\n    // with less than 3 args we check if first arg is object\n    // and use the keyOrder string to extract and sort properties\n    if (type(args[0]) == 'object' && keyOrder) {\n        return keyOrder\n            .split('')\n            .filter((k) => args[0][k] !== undefined)\n            .map((k) => args[0][k]);\n    }\n    // otherwise we just return the first argument\n    // (which we suppose is an array of args)\n    return args[0].slice(0);\n};\n","import type from './type.js';\n\nexport default (args) => {\n    if (args.length < 2) return null;\n    const l = args.length - 1;\n    if (type(args[l]) == 'string') return args[l].toLowerCase();\n    return null;\n};\n","const { PI, min, max } = Math;\n\nconst rnd2 = (a) => Math.round(a * 100) / 100;\nconst rnd3 = (a) => Math.round(a * 100) / 100;\n\nexport { default as clip_rgb } from './clip_rgb.js';\nexport { default as limit } from './limit.js';\nexport { default as type } from './type.js';\nexport { default as unpack } from './unpack.js';\nexport { default as last } from './last.js';\n\nconst TWOPI = PI * 2;\nconst PITHIRD = PI / 3;\nconst DEG2RAD = PI / 180;\nconst RAD2DEG = 180 / PI;\n\n/**\n * Reverse the first three elements of an array\n *\n * @param {any[]} arr\n * @returns {any[]}\n */\nfunction reverse3(arr) {\n    return [...arr.slice(0, 3).reverse(), ...arr.slice(3)];\n}\n\nexport { PI, TWOPI, PITHIRD, DEG2RAD, RAD2DEG, min, max, rnd2, rnd3, reverse3 };\n","export default {\n    format: {},\n    autodetect: []\n};\n","import { last, clip_rgb, type } from './utils/index.js';\nimport _input from './io/input.js';\n\nclass Color {\n    constructor(...args) {\n        const me = this;\n        if (\n            type(args[0]) === 'object' &&\n            args[0].constructor &&\n            args[0].constructor === this.constructor\n        ) {\n            // the argument is already a Color instance\n            return args[0];\n        }\n        // last argument could be the mode\n        let mode = last(args);\n        let autodetect = false;\n        if (!mode) {\n            autodetect = true;\n\n            if (!_input.sorted) {\n                _input.autodetect = _input.autodetect.sort((a, b) => b.p - a.p);\n                _input.sorted = true;\n            }\n\n            // auto-detect format\n            for (let chk of _input.autodetect) {\n                mode = chk.test(...args);\n                if (mode) break;\n            }\n        }\n        if (_input.format[mode]) {\n            const rgb = _input.format[mode].apply(\n                null,\n                autodetect ? args : args.slice(0, -1)\n            );\n            me._rgb = clip_rgb(rgb);\n        } else {\n            throw new Error('unknown format: ' + args);\n        }\n        // add alpha channel\n        if (me._rgb.length === 3) me._rgb.push(1);\n    }\n    toString() {\n        if (type(this.hex) == 'function') return this.hex();\n        return `[${this._rgb.join(',')}]`;\n    }\n}\nexport default Color;\n","// this gets updated automatically\nexport const version = '3.2.0';\n","import Color from './Color.js';\nimport { version } from './version.js';\n\nconst chroma = (...args) => {\n    return new Color(...args);\n};\n\nchroma.version = version;\n\nexport default chroma;\n","/**\n\tX11 color names\n\n\thttp://www.w3.org/TR/css3-color/#svg-color\n*/\n\nconst w3cx11 = {\n    aliceblue: '#f0f8ff',\n    antiquewhite: '#faebd7',\n    aqua: '#00ffff',\n    aquamarine: '#7fffd4',\n    azure: '#f0ffff',\n    beige: '#f5f5dc',\n    bisque: '#ffe4c4',\n    black: '#000000',\n    blanchedalmond: '#ffebcd',\n    blue: '#0000ff',\n    blueviolet: '#8a2be2',\n    brown: '#a52a2a',\n    burlywood: '#deb887',\n    cadetblue: '#5f9ea0',\n    chartreuse: '#7fff00',\n    chocolate: '#d2691e',\n    coral: '#ff7f50',\n    cornflowerblue: '#6495ed',\n    cornsilk: '#fff8dc',\n    crimson: '#dc143c',\n    cyan: '#00ffff',\n    darkblue: '#00008b',\n    darkcyan: '#008b8b',\n    darkgoldenrod: '#b8860b',\n    darkgray: '#a9a9a9',\n    darkgreen: '#006400',\n    darkgrey: '#a9a9a9',\n    darkkhaki: '#bdb76b',\n    darkmagenta: '#8b008b',\n    darkolivegreen: '#556b2f',\n    darkorange: '#ff8c00',\n    darkorchid: '#9932cc',\n    darkred: '#8b0000',\n    darksalmon: '#e9967a',\n    darkseagreen: '#8fbc8f',\n    darkslateblue: '#483d8b',\n    darkslategray: '#2f4f4f',\n    darkslategrey: '#2f4f4f',\n    darkturquoise: '#00ced1',\n    darkviolet: '#9400d3',\n    deeppink: '#ff1493',\n    deepskyblue: '#00bfff',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1e90ff',\n    firebrick: '#b22222',\n    floralwhite: '#fffaf0',\n    forestgreen: '#228b22',\n    fuchsia: '#ff00ff',\n    gainsboro: '#dcdcdc',\n    ghostwhite: '#f8f8ff',\n    gold: '#ffd700',\n    goldenrod: '#daa520',\n    gray: '#808080',\n    green: '#008000',\n    greenyellow: '#adff2f',\n    grey: '#808080',\n    honeydew: '#f0fff0',\n    hotpink: '#ff69b4',\n    indianred: '#cd5c5c',\n    indigo: '#4b0082',\n    ivory: '#fffff0',\n    khaki: '#f0e68c',\n    laserlemon: '#ffff54',\n    lavender: '#e6e6fa',\n    lavenderblush: '#fff0f5',\n    lawngreen: '#7cfc00',\n    lemonchiffon: '#fffacd',\n    lightblue: '#add8e6',\n    lightcoral: '#f08080',\n    lightcyan: '#e0ffff',\n    lightgoldenrod: '#fafad2',\n    lightgoldenrodyellow: '#fafad2',\n    lightgray: '#d3d3d3',\n    lightgreen: '#90ee90',\n    lightgrey: '#d3d3d3',\n    lightpink: '#ffb6c1',\n    lightsalmon: '#ffa07a',\n    lightseagreen: '#20b2aa',\n    lightskyblue: '#87cefa',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#b0c4de',\n    lightyellow: '#ffffe0',\n    lime: '#00ff00',\n    limegreen: '#32cd32',\n    linen: '#faf0e6',\n    magenta: '#ff00ff',\n    maroon: '#800000',\n    maroon2: '#7f0000',\n    maroon3: '#b03060',\n    mediumaquamarine: '#66cdaa',\n    mediumblue: '#0000cd',\n    mediumorchid: '#ba55d3',\n    mediumpurple: '#9370db',\n    mediumseagreen: '#3cb371',\n    mediumslateblue: '#7b68ee',\n    mediumspringgreen: '#00fa9a',\n    mediumturquoise: '#48d1cc',\n    mediumvioletred: '#c71585',\n    midnightblue: '#191970',\n    mintcream: '#f5fffa',\n    mistyrose: '#ffe4e1',\n    moccasin: '#ffe4b5',\n    navajowhite: '#ffdead',\n    navy: '#000080',\n    oldlace: '#fdf5e6',\n    olive: '#808000',\n    olivedrab: '#6b8e23',\n    orange: '#ffa500',\n    orangered: '#ff4500',\n    orchid: '#da70d6',\n    palegoldenrod: '#eee8aa',\n    palegreen: '#98fb98',\n    paleturquoise: '#afeeee',\n    palevioletred: '#db7093',\n    papayawhip: '#ffefd5',\n    peachpuff: '#ffdab9',\n    peru: '#cd853f',\n    pink: '#ffc0cb',\n    plum: '#dda0dd',\n    powderblue: '#b0e0e6',\n    purple: '#800080',\n    purple2: '#7f007f',\n    purple3: '#a020f0',\n    rebeccapurple: '#663399',\n    red: '#ff0000',\n    rosybrown: '#bc8f8f',\n    royalblue: '#4169e1',\n    saddlebrown: '#8b4513',\n    salmon: '#fa8072',\n    sandybrown: '#f4a460',\n    seagreen: '#2e8b57',\n    seashell: '#fff5ee',\n    sienna: '#a0522d',\n    silver: '#c0c0c0',\n    skyblue: '#87ceeb',\n    slateblue: '#6a5acd',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#fffafa',\n    springgreen: '#00ff7f',\n    steelblue: '#4682b4',\n    tan: '#d2b48c',\n    teal: '#008080',\n    thistle: '#d8bfd8',\n    tomato: '#ff6347',\n    turquoise: '#40e0d0',\n    violet: '#ee82ee',\n    wheat: '#f5deb3',\n    white: '#ffffff',\n    whitesmoke: '#f5f5f5',\n    yellow: '#ffff00',\n    yellowgreen: '#9acd32'\n};\n\nexport default w3cx11;\n","const RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\nconst RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\nconst hex2rgb = (hex) => {\n    if (hex.match(RE_HEX)) {\n        // remove optional leading #\n        if (hex.length === 4 || hex.length === 7) {\n            hex = hex.substr(1);\n        }\n        // expand short-notation to full six-digit\n        if (hex.length === 3) {\n            hex = hex.split('');\n            hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n        }\n        const u = parseInt(hex, 16);\n        const r = u >> 16;\n        const g = (u >> 8) & 0xff;\n        const b = u & 0xff;\n        return [r, g, b, 1];\n    }\n\n    // match rgba hex format, eg #FF000077\n    if (hex.match(RE_HEXA)) {\n        if (hex.length === 5 || hex.length === 9) {\n            // remove optional leading #\n            hex = hex.substr(1);\n        }\n        // expand short-notation to full eight-digit\n        if (hex.length === 4) {\n            hex = hex.split('');\n            hex =\n                hex[0] +\n                hex[0] +\n                hex[1] +\n                hex[1] +\n                hex[2] +\n                hex[2] +\n                hex[3] +\n                hex[3];\n        }\n        const u = parseInt(hex, 16);\n        const r = (u >> 24) & 0xff;\n        const g = (u >> 16) & 0xff;\n        const b = (u >> 8) & 0xff;\n        const a = Math.round(((u & 0xff) / 0xff) * 100) / 100;\n        return [r, g, b, a];\n    }\n\n    // we used to check for css colors here\n    // if _input.css? and rgb = _input.css hex\n    //     return rgb\n\n    throw new Error(`unknown hex color: ${hex}`);\n};\n\nexport default hex2rgb;\n","import { unpack, last } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2hex = (...args) => {\n    let [r, g, b, a] = unpack(args, 'rgba');\n    let mode = last(args) || 'auto';\n    if (a === undefined) a = 1;\n    if (mode === 'auto') {\n        mode = a < 1 ? 'rgba' : 'rgb';\n    }\n    r = round(r);\n    g = round(g);\n    b = round(b);\n    const u = (r << 16) | (g << 8) | b;\n    let str = '000000' + u.toString(16); //#.toUpperCase();\n    str = str.substr(str.length - 6);\n    let hxa = '0' + round(a * 255).toString(16);\n    hxa = hxa.substr(hxa.length - 2);\n    switch (mode.toLowerCase()) {\n        case 'rgba':\n            return `#${str}${hxa}`;\n        case 'argb':\n            return `#${hxa}${str}`;\n        default:\n            return `#${str}`;\n    }\n};\n\nexport default rgb2hex;\n","import Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport w3cx11 from '../../colors/w3cx11.js';\nimport hex2rgb from '../hex/hex2rgb.js';\nimport rgb2hex from '../hex/rgb2hex.js';\n\nColor.prototype.name = function () {\n    const hex = rgb2hex(this._rgb, 'rgb');\n    for (let n of Object.keys(w3cx11)) {\n        if (w3cx11[n] === hex) return n.toLowerCase();\n    }\n    return hex;\n};\n\ninput.format.named = (name) => {\n    name = name.toLowerCase();\n    if (w3cx11[name]) return hex2rgb(w3cx11[name]);\n    throw new Error('unknown color name: ' + name);\n};\n\ninput.autodetect.push({\n    p: 5,\n    test: (h, ...rest) => {\n        if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) {\n            return 'named';\n        }\n    }\n});\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.alpha = function (a, mutate = false) {\n    if (a !== undefined && type(a) === 'number') {\n        if (mutate) {\n            this._rgb[3] = a;\n            return this;\n        }\n        return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n    }\n    return this._rgb[3];\n};\n","import Color from '../Color.js';\n\nColor.prototype.clipped = function () {\n    return this._rgb._clipped || false;\n};\n","const labConstants = {\n    // Corresponds roughly to RGB brighter/darker\n    Kn: 18,\n\n    // D65 standard referent\n    labWhitePoint: 'd65',\n    Xn: 0.95047,\n    Yn: 1,\n    Zn: 1.08883,\n\n    t0: 0.137931034, // 4 / 29\n    t1: 0.206896552, // 6 / 29\n    t2: 0.12841855, // 3 * t1 * t1\n    t3: 0.008856452, // t1 * t1 * t1,\n\n    kE: 216.0 / 24389.0,\n    kKE: 8.0,\n    kK: 24389.0 / 27.0,\n\n    RefWhiteRGB: {\n        // sRGB\n        X: 0.95047,\n        Y: 1,\n        Z: 1.08883\n    },\n\n    MtxRGB2XYZ: {\n        m00: 0.4124564390896922,\n        m01: 0.21267285140562253,\n        m02: 0.0193338955823293,\n        m10: 0.357576077643909,\n        m11: 0.715152155287818,\n        m12: 0.11919202588130297,\n        m20: 0.18043748326639894,\n        m21: 0.07217499330655958,\n        m22: 0.9503040785363679\n    },\n\n    MtxXYZ2RGB: {\n        m00: 3.2404541621141045,\n        m01: -0.9692660305051868,\n        m02: 0.055643430959114726,\n        m10: -1.5371385127977166,\n        m11: 1.8760108454466942,\n        m12: -0.2040259135167538,\n        m20: -0.498531409556016,\n        m21: 0.041556017530349834,\n        m22: 1.0572251882231791\n    },\n\n    // used in rgb2xyz\n    As: 0.9414285350000001,\n    Bs: 1.040417467,\n    Cs: 1.089532651,\n\n    MtxAdaptMa: {\n        m00: 0.8951,\n        m01: -0.7502,\n        m02: 0.0389,\n        m10: 0.2664,\n        m11: 1.7135,\n        m12: -0.0685,\n        m20: -0.1614,\n        m21: 0.0367,\n        m22: 1.0296\n    },\n\n    MtxAdaptMaI: {\n        m00: 0.9869929054667123,\n        m01: 0.43230526972339456,\n        m02: -0.008528664575177328,\n        m10: -0.14705425642099013,\n        m11: 0.5183602715367776,\n        m12: 0.04004282165408487,\n        m20: 0.15996265166373125,\n        m21: 0.0492912282128556,\n        m22: 0.9684866957875502\n    }\n};\n\nexport default labConstants;\n\n// taken from https://de.mathworks.com/help/images/ref/whitepoint.html\nconst ILLUMINANTS = new Map([\n    // ASTM E308-01\n    ['a', [1.0985, 0.35585]],\n    // Wyszecki & Stiles, p. 769\n    ['b', [1.0985, 0.35585]],\n    // C ASTM E308-01\n    ['c', [0.98074, 1.18232]],\n    // D50 (ASTM E308-01)\n    ['d50', [0.96422, 0.82521]],\n    // D55 (ASTM E308-01)\n    ['d55', [0.95682, 0.92149]],\n    // D65 (ASTM E308-01)\n    ['d65', [0.95047, 1.08883]],\n    // E (ASTM E308-01)\n    ['e', [1, 1, 1]],\n    // F2 (ASTM E308-01)\n    ['f2', [0.99186, 0.67393]],\n    // F7 (ASTM E308-01)\n    ['f7', [0.95041, 1.08747]],\n    // F11 (ASTM E308-01)\n    ['f11', [1.00962, 0.6435]],\n    ['icc', [0.96422, 0.82521]]\n]);\n\nexport function setLabWhitePoint(name) {\n    const ill = ILLUMINANTS.get(String(name).toLowerCase());\n    if (!ill) {\n        throw new Error('unknown Lab illuminant ' + name);\n    }\n    labConstants.labWhitePoint = name;\n    labConstants.Xn = ill[0];\n    labConstants.Zn = ill[1];\n}\n\nexport function getLabWhitePoint() {\n    return labConstants.labWhitePoint;\n}\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\n\n/*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\nconst lab2rgb = (...args) => {\n    args = unpack(args, 'lab');\n    const [L, a, b] = args;\n    const [x, y, z] = lab2xyz(L, a, b);\n    const [r, g, b_] = xyz2rgb(x, y, z);\n    return [r, g, b_, args.length > 3 ? args[3] : 1];\n};\n\nconst lab2xyz = (L, a, b) => {\n    const { kE, kK, kKE, Xn, Yn, Zn } = LAB_CONSTANTS;\n\n    const fy = (L + 16.0) / 116.0;\n    const fx = 0.002 * a + fy;\n    const fz = fy - 0.005 * b;\n\n    const fx3 = fx * fx * fx;\n    const fz3 = fz * fz * fz;\n\n    const xr = fx3 > kE ? fx3 : (116.0 * fx - 16.0) / kK;\n    const yr = L > kKE ? Math.pow((L + 16.0) / 116.0, 3.0) : L / kK;\n    const zr = fz3 > kE ? fz3 : (116.0 * fz - 16.0) / kK;\n\n    const x = xr * Xn;\n    const y = yr * Yn;\n    const z = zr * Zn;\n\n    return [x, y, z];\n};\n\nconst compand = (linear) => {\n    /* sRGB */\n    const sign = Math.sign(linear);\n    linear = Math.abs(linear);\n    return (\n        (linear <= 0.0031308\n            ? linear * 12.92\n            : 1.055 * Math.pow(linear, 1.0 / 2.4) - 0.055) * sign\n    );\n};\n\nconst xyz2rgb = (x, y, z) => {\n    const { MtxAdaptMa, MtxAdaptMaI, MtxXYZ2RGB, RefWhiteRGB, Xn, Yn, Zn } =\n        LAB_CONSTANTS;\n\n    const As = Xn * MtxAdaptMa.m00 + Yn * MtxAdaptMa.m10 + Zn * MtxAdaptMa.m20;\n    const Bs = Xn * MtxAdaptMa.m01 + Yn * MtxAdaptMa.m11 + Zn * MtxAdaptMa.m21;\n    const Cs = Xn * MtxAdaptMa.m02 + Yn * MtxAdaptMa.m12 + Zn * MtxAdaptMa.m22;\n\n    const Ad =\n        RefWhiteRGB.X * MtxAdaptMa.m00 +\n        RefWhiteRGB.Y * MtxAdaptMa.m10 +\n        RefWhiteRGB.Z * MtxAdaptMa.m20;\n    const Bd =\n        RefWhiteRGB.X * MtxAdaptMa.m01 +\n        RefWhiteRGB.Y * MtxAdaptMa.m11 +\n        RefWhiteRGB.Z * MtxAdaptMa.m21;\n    const Cd =\n        RefWhiteRGB.X * MtxAdaptMa.m02 +\n        RefWhiteRGB.Y * MtxAdaptMa.m12 +\n        RefWhiteRGB.Z * MtxAdaptMa.m22;\n\n    const X1 =\n        (x * MtxAdaptMa.m00 + y * MtxAdaptMa.m10 + z * MtxAdaptMa.m20) *\n        (Ad / As);\n    const Y1 =\n        (x * MtxAdaptMa.m01 + y * MtxAdaptMa.m11 + z * MtxAdaptMa.m21) *\n        (Bd / Bs);\n    const Z1 =\n        (x * MtxAdaptMa.m02 + y * MtxAdaptMa.m12 + z * MtxAdaptMa.m22) *\n        (Cd / Cs);\n\n    const X2 =\n        X1 * MtxAdaptMaI.m00 + Y1 * MtxAdaptMaI.m10 + Z1 * MtxAdaptMaI.m20;\n    const Y2 =\n        X1 * MtxAdaptMaI.m01 + Y1 * MtxAdaptMaI.m11 + Z1 * MtxAdaptMaI.m21;\n    const Z2 =\n        X1 * MtxAdaptMaI.m02 + Y1 * MtxAdaptMaI.m12 + Z1 * MtxAdaptMaI.m22;\n\n    const r = compand(\n        X2 * MtxXYZ2RGB.m00 + Y2 * MtxXYZ2RGB.m10 + Z2 * MtxXYZ2RGB.m20\n    );\n    const g = compand(\n        X2 * MtxXYZ2RGB.m01 + Y2 * MtxXYZ2RGB.m11 + Z2 * MtxXYZ2RGB.m21\n    );\n    const b = compand(\n        X2 * MtxXYZ2RGB.m02 + Y2 * MtxXYZ2RGB.m12 + Z2 * MtxXYZ2RGB.m22\n    );\n\n    return [r * 255, g * 255, b * 255];\n};\n\nexport default lab2rgb;\nexport { xyz2rgb };\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\n\nconst rgb2lab = (...args) => {\n    const [r, g, b, ...rest] = unpack(args, 'rgb');\n    const [x, y, z] = rgb2xyz(r, g, b);\n    const [L, a, b_] = xyz2lab(x, y, z);\n    return [L, a, b_, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nfunction xyz2lab(x, y, z) {\n    const { Xn, Yn, Zn, kE, kK } = LAB_CONSTANTS;\n    const xr = x / Xn;\n    const yr = y / Yn;\n    const zr = z / Zn;\n\n    const fx = xr > kE ? Math.pow(xr, 1.0 / 3.0) : (kK * xr + 16.0) / 116.0;\n    const fy = yr > kE ? Math.pow(yr, 1.0 / 3.0) : (kK * yr + 16.0) / 116.0;\n    const fz = zr > kE ? Math.pow(zr, 1.0 / 3.0) : (kK * zr + 16.0) / 116.0;\n\n    return [116.0 * fy - 16.0, 500.0 * (fx - fy), 200.0 * (fy - fz)];\n}\n\nfunction gammaAdjustSRGB(companded) {\n    const sign = Math.sign(companded);\n    companded = Math.abs(companded);\n    const linear =\n        companded <= 0.04045\n            ? companded / 12.92\n            : Math.pow((companded + 0.055) / 1.055, 2.4);\n    return linear * sign;\n}\n\nconst rgb2xyz = (r, g, b) => {\n    // normalize and gamma adjust\n    r = gammaAdjustSRGB(r / 255);\n    g = gammaAdjustSRGB(g / 255);\n    b = gammaAdjustSRGB(b / 255);\n\n    const { MtxRGB2XYZ, MtxAdaptMa, MtxAdaptMaI, Xn, Yn, Zn, As, Bs, Cs } =\n        LAB_CONSTANTS;\n\n    let x = r * MtxRGB2XYZ.m00 + g * MtxRGB2XYZ.m10 + b * MtxRGB2XYZ.m20;\n    let y = r * MtxRGB2XYZ.m01 + g * MtxRGB2XYZ.m11 + b * MtxRGB2XYZ.m21;\n    let z = r * MtxRGB2XYZ.m02 + g * MtxRGB2XYZ.m12 + b * MtxRGB2XYZ.m22;\n\n    const Ad = Xn * MtxAdaptMa.m00 + Yn * MtxAdaptMa.m10 + Zn * MtxAdaptMa.m20;\n    const Bd = Xn * MtxAdaptMa.m01 + Yn * MtxAdaptMa.m11 + Zn * MtxAdaptMa.m21;\n    const Cd = Xn * MtxAdaptMa.m02 + Yn * MtxAdaptMa.m12 + Zn * MtxAdaptMa.m22;\n\n    let X = x * MtxAdaptMa.m00 + y * MtxAdaptMa.m10 + z * MtxAdaptMa.m20;\n    let Y = x * MtxAdaptMa.m01 + y * MtxAdaptMa.m11 + z * MtxAdaptMa.m21;\n    let Z = x * MtxAdaptMa.m02 + y * MtxAdaptMa.m12 + z * MtxAdaptMa.m22;\n\n    X *= Ad / As;\n    Y *= Bd / Bs;\n    Z *= Cd / Cs;\n\n    x = X * MtxAdaptMaI.m00 + Y * MtxAdaptMaI.m10 + Z * MtxAdaptMaI.m20;\n    y = X * MtxAdaptMaI.m01 + Y * MtxAdaptMaI.m11 + Z * MtxAdaptMaI.m21;\n    z = X * MtxAdaptMaI.m02 + Y * MtxAdaptMaI.m12 + Z * MtxAdaptMaI.m22;\n\n    return [x, y, z];\n};\n\nexport default rgb2lab;\nexport { rgb2xyz };\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lab2rgb from './lab2rgb.js';\nimport rgb2lab from './rgb2lab.js';\nimport { getLabWhitePoint, setLabWhitePoint } from './lab-constants.js';\n\nColor.prototype.lab = function () {\n    return rgb2lab(this._rgb);\n};\n\nconst lab = (...args) => new Color(...args, 'lab');\nObject.assign(chroma, { lab, getLabWhitePoint, setLabWhitePoint });\n\ninput.format.lab = lab2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'lab');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'lab';\n        }\n    }\n});\n\nexport { lab, getLabWhitePoint, setLabWhitePoint };\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.darken = function (amount = 1) {\n    const me = this;\n    const lab = me.lab();\n    lab[0] -= LAB_CONSTANTS.Kn * amount;\n    return new Color(lab, 'lab').alpha(me.alpha(), true);\n};\n\nColor.prototype.brighten = function (amount = 1) {\n    return this.darken(-amount);\n};\n\nColor.prototype.darker = Color.prototype.darken;\nColor.prototype.brighter = Color.prototype.brighten;\n","import Color from '../Color.js';\n\nColor.prototype.get = function (mc) {\n    const [mode, channel] = mc.split('.');\n    const src = this[mode]();\n    if (channel) {\n        const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n        if (i > -1) return src[i];\n        throw new Error(`unknown channel ${channel} in mode ${mode}`);\n    } else {\n        return src;\n    }\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nconst { pow } = Math;\n\nconst EPS = 1e-7;\nconst MAX_ITER = 20;\n\nColor.prototype.luminance = function (lum, mode = 'rgb') {\n    if (lum !== undefined && type(lum) === 'number') {\n        if (lum === 0) {\n            // return pure black\n            return new Color([0, 0, 0, this._rgb[3]], 'rgb');\n        }\n        if (lum === 1) {\n            // return pure white\n            return new Color([255, 255, 255, this._rgb[3]], 'rgb');\n        }\n        // compute new color using...\n        let cur_lum = this.luminance();\n        let max_iter = MAX_ITER;\n\n        const test = (low, high) => {\n            const mid = low.interpolate(high, 0.5, mode);\n            const lm = mid.luminance();\n            if (Math.abs(lum - lm) < EPS || !max_iter--) {\n                // close enough\n                return mid;\n            }\n            return lm > lum ? test(low, mid) : test(mid, high);\n        };\n\n        const rgb = (\n            cur_lum > lum\n                ? test(new Color([0, 0, 0]), this)\n                : test(this, new Color([255, 255, 255]))\n        ).rgb();\n        return new Color([...rgb, this._rgb[3]]);\n    }\n    return rgb2luminance(...this._rgb.slice(0, 3));\n};\n\nconst rgb2luminance = (r, g, b) => {\n    // relative luminance\n    // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n    r = luminance_x(r);\n    g = luminance_x(g);\n    b = luminance_x(b);\n    return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nconst luminance_x = (x) => {\n    x /= 255;\n    return x <= 0.03928 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n};\n","export default {};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nimport interpolator from '../interpolator/index.js';\n\nexport default (col1, col2, f = 0.5, ...rest) => {\n    let mode = rest[0] || 'lrgb';\n    if (!interpolator[mode] && !rest.length) {\n        // fall back to the first supported mode\n        mode = Object.keys(interpolator)[0];\n    }\n    if (!interpolator[mode]) {\n        throw new Error(`interpolation mode ${mode} is not defined`);\n    }\n    if (type(col1) !== 'object') col1 = new Color(col1);\n    if (type(col2) !== 'object') col2 = new Color(col2);\n    return interpolator[mode](col1, col2, f).alpha(\n        col1.alpha() + f * (col2.alpha() - col1.alpha())\n    );\n};\n","import Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.mix = Color.prototype.interpolate = function (\n    col2,\n    f = 0.5,\n    ...rest\n) {\n    return mix(this, col2, f, ...rest);\n};\n","import Color from '../Color.js';\n\nColor.prototype.premultiply = function (mutate = false) {\n    const rgb = this._rgb;\n    const a = rgb[3];\n    if (mutate) {\n        this._rgb = [rgb[0] * a, rgb[1] * a, rgb[2] * a, a];\n        return this;\n    } else {\n        return new Color([rgb[0] * a, rgb[1] * a, rgb[2] * a, a], 'rgb');\n    }\n};\n","import { unpack, DEG2RAD } from '../../utils/index.js';\nconst { sin, cos } = Math;\n\nconst lch2lab = (...args) => {\n    /*\n    Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n    These formulas were invented by David Dalrymple to obtain maximum contrast without going\n    out of gamut if the parameters are in the range 0-1.\n\n    A saturation multiplier was added by Gregor Aisch\n    */\n    let [l, c, h] = unpack(args, 'lch');\n    if (isNaN(h)) h = 0;\n    h = h * DEG2RAD;\n    return [l, cos(h) * c, sin(h) * c];\n};\n\nexport default lch2lab;\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from './lch2lab.js';\nimport lab2rgb from '../lab/lab2rgb.js';\n\nconst lch2rgb = (...args) => {\n    args = unpack(args, 'lch');\n    const [l, c, h] = args;\n    const [L, a, b_] = lch2lab(l, c, h);\n    const [r, g, b] = lab2rgb(L, a, b_);\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default lch2rgb;\n","import { unpack, reverse3 } from '../../utils/index.js';\nimport lch2rgb from './lch2rgb.js';\n\nconst hcl2rgb = (...args) => {\n    const hcl = reverse3(unpack(args, 'hcl'));\n    return lch2rgb(...hcl);\n};\n\nexport default hcl2rgb;\n","import { unpack, RAD2DEG } from '../../utils/index.js';\nconst { sqrt, atan2, round } = Math;\n\nconst lab2lch = (...args) => {\n    const [l, a, b] = unpack(args, 'lab');\n    const c = sqrt(a * a + b * b);\n    let h = (atan2(b, a) * RAD2DEG + 360) % 360;\n    if (round(c * 10000) === 0) h = Number.NaN;\n    return [l, c, h];\n};\n\nexport default lab2lch;\n","import { unpack } from '../../utils/index.js';\nimport rgb2lab from '../lab/rgb2lab.js';\nimport lab2lch from './lab2lch.js';\n\nconst rgb2lch = (...args) => {\n    const [r, g, b, ...rest] = unpack(args, 'rgb');\n    const [l, a, b_] = rgb2lab(r, g, b);\n    const [L, c, h] = lab2lch(l, a, b_);\n    return [L, c, h, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nexport default rgb2lch;\n","import { unpack, type, reverse3 } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lch2rgb from './lch2rgb.js';\nimport hcl2rgb from './hcl2rgb.js';\nimport rgb2lch from './rgb2lch.js';\n\nColor.prototype.lch = function () {\n    return rgb2lch(this._rgb);\n};\nColor.prototype.hcl = function () {\n    return reverse3(rgb2lch(this._rgb));\n};\n\nconst lch = (...args) => new Color(...args, 'lch');\nconst hcl = (...args) => new Color(...args, 'hcl');\n\nObject.assign(chroma, { lch, hcl });\n\ninput.format.lch = lch2rgb;\ninput.format.hcl = hcl2rgb;\n['lch', 'hcl'].forEach((m) =>\n    input.autodetect.push({\n        p: 2,\n        test: (...args) => {\n            args = unpack(args, m);\n            if (type(args) === 'array' && args.length === 3) {\n                return m;\n            }\n        }\n    })\n);\n\nexport { lch, hcl };\n","import '../io/lch/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.saturate = function (amount = 1) {\n    const me = this;\n    const lch = me.lch();\n    lch[1] += LAB_CONSTANTS.Kn * amount;\n    if (lch[1] < 0) lch[1] = 0;\n    return new Color(lch, 'lch').alpha(me.alpha(), true);\n};\n\nColor.prototype.desaturate = function (amount = 1) {\n    return this.saturate(-amount);\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.set = function (mc, value, mutate = false) {\n    const [mode, channel] = mc.split('.');\n    const src = this[mode]();\n    if (channel) {\n        const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n        if (i > -1) {\n            if (type(value) == 'string') {\n                switch (value.charAt(0)) {\n                    case '+':\n                        src[i] += +value;\n                        break;\n                    case '-':\n                        src[i] += +value;\n                        break;\n                    case '*':\n                        src[i] *= +value.substr(1);\n                        break;\n                    case '/':\n                        src[i] /= +value.substr(1);\n                        break;\n                    default:\n                        src[i] = +value;\n                }\n            } else if (type(value) === 'number') {\n                src[i] = value;\n            } else {\n                throw new Error(`unsupported value for Color.set`);\n            }\n            const out = new Color(src, mode);\n            if (mutate) {\n                this._rgb = out._rgb;\n                return this;\n            }\n            return out;\n        }\n        throw new Error(`unknown channel ${channel} in mode ${mode}`);\n    } else {\n        return src;\n    }\n};\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.tint = function (f = 0.5, ...rest) {\n    return mix(this, 'white', f, ...rest);\n};\n\nColor.prototype.shade = function (f = 0.5, ...rest) {\n    return mix(this, 'black', f, ...rest);\n};\n","import Color from '../Color.js';\nimport index from './index.js';\n\nconst rgb = (col1, col2, f) => {\n    const xyz0 = col1._rgb;\n    const xyz1 = col2._rgb;\n    return new Color(\n        xyz0[0] + f * (xyz1[0] - xyz0[0]),\n        xyz0[1] + f * (xyz1[1] - xyz0[1]),\n        xyz0[2] + f * (xyz1[2] - xyz0[2]),\n        'rgb'\n    );\n};\n\n// register interpolator\nindex.rgb = rgb;\n\nexport default rgb;\n","import Color from '../Color.js';\nconst { sqrt, pow } = Math;\nimport index from './index.js';\n\nconst lrgb = (col1, col2, f) => {\n    const [x1, y1, z1] = col1._rgb;\n    const [x2, y2, z2] = col2._rgb;\n    return new Color(\n        sqrt(pow(x1, 2) * (1 - f) + pow(x2, 2) * f),\n        sqrt(pow(y1, 2) * (1 - f) + pow(y2, 2) * f),\n        sqrt(pow(z1, 2) * (1 - f) + pow(z2, 2) * f),\n        'rgb'\n    );\n};\n\n// register interpolator\nindex.lrgb = lrgb;\n\nexport default lrgb;\n","import '../io/lab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst lab = (col1, col2, f) => {\n    const xyz0 = col1.lab();\n    const xyz1 = col2.lab();\n    return new Color(\n        xyz0[0] + f * (xyz1[0] - xyz0[0]),\n        xyz0[1] + f * (xyz1[1] - xyz0[1]),\n        xyz0[2] + f * (xyz1[2] - xyz0[2]),\n        'lab'\n    );\n};\n\n// register interpolator\nindex.lab = lab;\n\nexport default lab;\n","import Color from '../Color.js';\n\nexport default (col1, col2, f, m) => {\n    let xyz0, xyz1;\n    if (m === 'hsl') {\n        xyz0 = col1.hsl();\n        xyz1 = col2.hsl();\n    } else if (m === 'hsv') {\n        xyz0 = col1.hsv();\n        xyz1 = col2.hsv();\n    } else if (m === 'hcg') {\n        xyz0 = col1.hcg();\n        xyz1 = col2.hcg();\n    } else if (m === 'hsi') {\n        xyz0 = col1.hsi();\n        xyz1 = col2.hsi();\n    } else if (m === 'lch' || m === 'hcl') {\n        m = 'hcl';\n        xyz0 = col1.hcl();\n        xyz1 = col2.hcl();\n    } else if (m === 'oklch') {\n        xyz0 = col1.oklch().reverse();\n        xyz1 = col2.oklch().reverse();\n    }\n\n    let hue0, hue1, sat0, sat1, lbv0, lbv1;\n    if (m.substr(0, 1) === 'h' || m === 'oklch') {\n        [hue0, sat0, lbv0] = xyz0;\n        [hue1, sat1, lbv1] = xyz1;\n    }\n\n    let sat, hue, lbv, dh;\n\n    if (!isNaN(hue0) && !isNaN(hue1)) {\n        // both colors have hue\n        if (hue1 > hue0 && hue1 - hue0 > 180) {\n            dh = hue1 - (hue0 + 360);\n        } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n            dh = hue1 + 360 - hue0;\n        } else {\n            dh = hue1 - hue0;\n        }\n        hue = hue0 + f * dh;\n    } else if (!isNaN(hue0)) {\n        hue = hue0;\n        if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') sat = sat0;\n    } else if (!isNaN(hue1)) {\n        hue = hue1;\n        if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') sat = sat1;\n    } else {\n        hue = Number.NaN;\n    }\n\n    if (sat === undefined) sat = sat0 + f * (sat1 - sat0);\n    lbv = lbv0 + f * (lbv1 - lbv0);\n    return m === 'oklch'\n        ? new Color([lbv, sat, hue], m)\n        : new Color([hue, sat, lbv], m);\n};\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst lch = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'lch');\n};\n\n// register interpolator\nindex.lch = lch;\nindex.hcl = lch;\n\nexport default lch;\n","import { type } from '../../utils/index.js';\n\nconst num2rgb = (num) => {\n    if (type(num) == 'number' && num >= 0 && num <= 0xffffff) {\n        const r = num >> 16;\n        const g = (num >> 8) & 0xff;\n        const b = num & 0xff;\n        return [r, g, b, 1];\n    }\n    throw new Error('unknown num color: ' + num);\n};\n\nexport default num2rgb;\n","import { unpack } from '../../utils/index.js';\n\nconst rgb2num = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    return (r << 16) + (g << 8) + b;\n};\n\nexport default rgb2num;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\nimport num2rgb from './num2rgb.js';\nimport rgb2num from './rgb2num.js';\n\nColor.prototype.num = function () {\n    return rgb2num(this._rgb);\n};\n\nconst num = (...args) => new Color(...args, 'num');\n\nObject.assign(chroma, { num });\n\ninput.format.num = num2rgb;\n\ninput.autodetect.push({\n    p: 5,\n    test: (...args) => {\n        if (\n            args.length === 1 &&\n            type(args[0]) === 'number' &&\n            args[0] >= 0 &&\n            args[0] <= 0xffffff\n        ) {\n            return 'num';\n        }\n    }\n});\n\nexport { num };\n","import '../io/num/index.js';\nimport index from './index.js';\n\nimport Color from '../Color.js';\n\nconst num = (col1, col2, f) => {\n    const c1 = col1.num();\n    const c2 = col2.num();\n    return new Color(c1 + f * (c2 - c1), 'num');\n};\n\n// register interpolator\nindex.num = num;\n\nexport default num;\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\n/*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\nconst hcg2rgb = (...args) => {\n    args = unpack(args, 'hcg');\n    let [h, c, _g] = args;\n    let r, g, b;\n    _g = _g * 255;\n    const _c = c * 255;\n    if (c === 0) {\n        r = g = b = _g;\n    } else {\n        if (h === 360) h = 0;\n        if (h > 360) h -= 360;\n        if (h < 0) h += 360;\n        h /= 60;\n        const i = floor(h);\n        const f = h - i;\n        const p = _g * (1 - c);\n        const q = p + _c * (1 - f);\n        const t = p + _c * f;\n        const v = p + _c;\n        switch (i) {\n            case 0:\n                [r, g, b] = [v, t, p];\n                break;\n            case 1:\n                [r, g, b] = [q, v, p];\n                break;\n            case 2:\n                [r, g, b] = [p, v, t];\n                break;\n            case 3:\n                [r, g, b] = [p, q, v];\n                break;\n            case 4:\n                [r, g, b] = [t, p, v];\n                break;\n            case 5:\n                [r, g, b] = [v, p, q];\n                break;\n        }\n    }\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hcg2rgb;\n","import { unpack, max, min } from '../../utils/index.js';\n\nconst rgb2hcg = (...args) => {\n    const [r, g, b] = unpack(args, 'rgb');\n    const minRgb = min(r, g, b);\n    const maxRgb = max(r, g, b);\n    const delta = maxRgb - minRgb;\n    const c = (delta * 100) / 255;\n    const _g = (minRgb / (255 - delta)) * 100;\n    let h;\n    if (delta === 0) {\n        h = Number.NaN;\n    } else {\n        if (r === maxRgb) h = (g - b) / delta;\n        if (g === maxRgb) h = 2 + (b - r) / delta;\n        if (b === maxRgb) h = 4 + (r - g) / delta;\n        h *= 60;\n        if (h < 0) h += 360;\n    }\n    return [h, c, _g];\n};\n\nexport default rgb2hcg;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hcg2rgb from './hcg2rgb.js';\nimport rgb2hcg from './rgb2hcg.js';\n\nColor.prototype.hcg = function () {\n    return rgb2hcg(this._rgb);\n};\n\nconst hcg = (...args) => new Color(...args, 'hcg');\nchroma.hcg = hcg;\n\ninput.format.hcg = hcg2rgb;\n\ninput.autodetect.push({\n    p: 1,\n    test: (...args) => {\n        args = unpack(args, 'hcg');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hcg';\n        }\n    }\n});\n\nexport { hcg };\n","import '../io/hcg/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hcg = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hcg');\n};\n\n// register interpolator\nindex.hcg = hcg;\n\nexport default hcg;\n","import { unpack, limit, TWOPI, PITHIRD } from '../../utils/index.js';\nconst { cos } = Math;\n\n/*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\nconst hsi2rgb = (...args) => {\n    /*\n    borrowed from here:\n    http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n    */\n    args = unpack(args, 'hsi');\n    let [h, s, i] = args;\n    let r, g, b;\n\n    if (isNaN(h)) h = 0;\n    if (isNaN(s)) s = 0;\n    // normalize hue\n    if (h > 360) h -= 360;\n    if (h < 0) h += 360;\n    h /= 360;\n    if (h < 1 / 3) {\n        b = (1 - s) / 3;\n        r = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n        g = 1 - (b + r);\n    } else if (h < 2 / 3) {\n        h -= 1 / 3;\n        r = (1 - s) / 3;\n        g = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n        b = 1 - (r + g);\n    } else {\n        h -= 2 / 3;\n        g = (1 - s) / 3;\n        b = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n        r = 1 - (g + b);\n    }\n    r = limit(i * r * 3);\n    g = limit(i * g * 3);\n    b = limit(i * b * 3);\n    return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsi2rgb;\n","import { unpack, TWOPI } from '../../utils/index.js';\nconst { min, sqrt, acos } = Math;\n\nconst rgb2hsi = (...args) => {\n    /*\n    borrowed from here:\n    http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n    */\n    let [r, g, b] = unpack(args, 'rgb');\n    r /= 255;\n    g /= 255;\n    b /= 255;\n    let h;\n    const min_ = min(r, g, b);\n    const i = (r + g + b) / 3;\n    const s = i > 0 ? 1 - min_ / i : 0;\n    if (s === 0) {\n        h = NaN;\n    } else {\n        h = (r - g + (r - b)) / 2;\n        h /= sqrt((r - g) * (r - g) + (r - b) * (g - b));\n        h = acos(h);\n        if (b > g) {\n            h = TWOPI - h;\n        }\n        h /= TWOPI;\n    }\n    return [h * 360, s, i];\n};\n\nexport default rgb2hsi;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsi2rgb from './hsi2rgb.js';\nimport rgb2hsi from './rgb2hsi.js';\n\nColor.prototype.hsi = function () {\n    return rgb2hsi(this._rgb);\n};\n\nconst hsi = (...args) => new Color(...args, 'hsi');\nchroma.hsi = hsi;\n\ninput.format.hsi = hsi2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'hsi');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hsi';\n        }\n    }\n});\n\nexport { hsi };\n","import '../io/hsi/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsi = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hsi');\n};\n\n// register interpolator\nindex.hsi = hsi;\n\nexport default hsi;\n","import { unpack } from '../../utils/index.js';\n\nconst hsl2rgb = (...args) => {\n    args = unpack(args, 'hsl');\n    const [h, s, l] = args;\n    let r, g, b;\n    if (s === 0) {\n        r = g = b = l * 255;\n    } else {\n        const t3 = [0, 0, 0];\n        const c = [0, 0, 0];\n        const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        const t1 = 2 * l - t2;\n        const h_ = h / 360;\n        t3[0] = h_ + 1 / 3;\n        t3[1] = h_;\n        t3[2] = h_ - 1 / 3;\n        for (let i = 0; i < 3; i++) {\n            if (t3[i] < 0) t3[i] += 1;\n            if (t3[i] > 1) t3[i] -= 1;\n            if (6 * t3[i] < 1) c[i] = t1 + (t2 - t1) * 6 * t3[i];\n            else if (2 * t3[i] < 1) c[i] = t2;\n            else if (3 * t3[i] < 2) c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6;\n            else c[i] = t1;\n        }\n        [r, g, b] = [c[0] * 255, c[1] * 255, c[2] * 255];\n    }\n    if (args.length > 3) {\n        // keep alpha channel\n        return [r, g, b, args[3]];\n    }\n    return [r, g, b, 1];\n};\n\nexport default hsl2rgb;\n","import { unpack, min, max } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\nconst rgb2hsl = (...args) => {\n    args = unpack(args, 'rgba');\n    let [r, g, b] = args;\n\n    r /= 255;\n    g /= 255;\n    b /= 255;\n\n    const minRgb = min(r, g, b);\n    const maxRgb = max(r, g, b);\n\n    const l = (maxRgb + minRgb) / 2;\n    let s, h;\n\n    if (maxRgb === minRgb) {\n        s = 0;\n        h = Number.NaN;\n    } else {\n        s =\n            l < 0.5\n                ? (maxRgb - minRgb) / (maxRgb + minRgb)\n                : (maxRgb - minRgb) / (2 - maxRgb - minRgb);\n    }\n\n    if (r == maxRgb) h = (g - b) / (maxRgb - minRgb);\n    else if (g == maxRgb) h = 2 + (b - r) / (maxRgb - minRgb);\n    else if (b == maxRgb) h = 4 + (r - g) / (maxRgb - minRgb);\n\n    h *= 60;\n    if (h < 0) h += 360;\n    if (args.length > 3 && args[3] !== undefined) return [h, s, l, args[3]];\n    return [h, s, l];\n};\n\nexport default rgb2hsl;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsl2rgb from './hsl2rgb.js';\nimport rgb2hsl from './rgb2hsl.js';\n\nColor.prototype.hsl = function () {\n    return rgb2hsl(this._rgb);\n};\n\nconst hsl = (...args) => new Color(...args, 'hsl');\nchroma.hsl = hsl;\n\ninput.format.hsl = hsl2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'hsl');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hsl';\n        }\n    }\n});\n\nexport { hsl };\n","import '../io/hsl/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsl = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hsl');\n};\n\n// register interpolator\nindex.hsl = hsl;\n\nexport default hsl;\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\nconst hsv2rgb = (...args) => {\n    args = unpack(args, 'hsv');\n    let [h, s, v] = args;\n    let r, g, b;\n    v *= 255;\n    if (s === 0) {\n        r = g = b = v;\n    } else {\n        if (h === 360) h = 0;\n        if (h > 360) h -= 360;\n        if (h < 0) h += 360;\n        h /= 60;\n\n        const i = floor(h);\n        const f = h - i;\n        const p = v * (1 - s);\n        const q = v * (1 - s * f);\n        const t = v * (1 - s * (1 - f));\n\n        switch (i) {\n            case 0:\n                [r, g, b] = [v, t, p];\n                break;\n            case 1:\n                [r, g, b] = [q, v, p];\n                break;\n            case 2:\n                [r, g, b] = [p, v, t];\n                break;\n            case 3:\n                [r, g, b] = [p, q, v];\n                break;\n            case 4:\n                [r, g, b] = [t, p, v];\n                break;\n            case 5:\n                [r, g, b] = [v, p, q];\n                break;\n        }\n    }\n    return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsv2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { min, max } = Math;\n\n/*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\nconst rgb2hsl = (...args) => {\n    args = unpack(args, 'rgb');\n    let [r, g, b] = args;\n    const min_ = min(r, g, b);\n    const max_ = max(r, g, b);\n    const delta = max_ - min_;\n    let h, s, v;\n    v = max_ / 255.0;\n    if (max_ === 0) {\n        h = Number.NaN;\n        s = 0;\n    } else {\n        s = delta / max_;\n        if (r === max_) h = (g - b) / delta;\n        if (g === max_) h = 2 + (b - r) / delta;\n        if (b === max_) h = 4 + (r - g) / delta;\n        h *= 60;\n        if (h < 0) h += 360;\n    }\n    return [h, s, v];\n};\n\nexport default rgb2hsl;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsv2rgb from './hsv2rgb.js';\nimport rgb2hsv from './rgb2hsv.js';\n\nColor.prototype.hsv = function () {\n    return rgb2hsv(this._rgb);\n};\n\nconst hsv = (...args) => new Color(...args, 'hsv');\nchroma.hsv = hsv;\n\ninput.format.hsv = hsv2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'hsv');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'hsv';\n        }\n    }\n});\n\nexport { hsv };\n","import '../io/hsv/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsv = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'hsv');\n};\n\n// register interpolator\nindex.hsv = hsv;\n\nexport default hsv;\n","// from https://www.w3.org/TR/css-color-4/multiply-matrices.js\nexport default function multiplyMatrices(A, B) {\n    let m = A.length;\n\n    if (!Array.isArray(A[0])) {\n        // A is vector, convert to [[a, b, c, ...]]\n        A = [A];\n    }\n\n    if (!Array.isArray(B[0])) {\n        // B is vector, convert to [[a], [b], [c], ...]]\n        B = B.map((x) => [x]);\n    }\n\n    let p = B[0].length;\n    let B_cols = B[0].map((_, i) => B.map((x) => x[i])); // transpose B\n    let product = A.map((row) =>\n        B_cols.map((col) => {\n            if (!Array.isArray(row)) {\n                return col.reduce((a, c) => a + c * row, 0);\n            }\n\n            return row.reduce((a, c, i) => a + c * (col[i] || 0), 0);\n        })\n    );\n\n    if (m === 1) {\n        product = product[0]; // Avoid [[a, b, c, ...]]\n    }\n\n    if (p === 1) {\n        return product.map((x) => x[0]); // Avoid [[a], [b], [c], ...]]\n    }\n\n    return product;\n}\n","import { unpack } from '../../utils/index.js';\nimport multiplyMatrices from '../../utils/multiply-matrices.js';\nimport { xyz2rgb } from '../lab/lab2rgb.js';\n\nconst oklab2rgb = (...args) => {\n    args = unpack(args, 'lab');\n    const [L, a, b, ...rest] = args;\n    const [X, Y, Z] = OKLab_to_XYZ([L, a, b]);\n    const [r, g, b_] = xyz2rgb(X, Y, Z);\n    return [r, g, b_, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\n// from https://www.w3.org/TR/css-color-4/#color-conversion-code\nfunction OKLab_to_XYZ(OKLab) {\n    // Given OKLab, convert to XYZ relative to D65\n    var LMStoXYZ = [\n        [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],\n        [-0.0405757452148008, 1.112286803280317, -0.0717110580655164],\n        [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]\n    ];\n    var OKLabtoLMS = [\n        [1.0, 0.3963377773761749, 0.2158037573099136],\n        [1.0, -0.1055613458156586, -0.0638541728258133],\n        [1.0, -0.0894841775298119, -1.2914855480194092]\n    ];\n\n    var LMSnl = multiplyMatrices(OKLabtoLMS, OKLab);\n    return multiplyMatrices(\n        LMStoXYZ,\n        LMSnl.map((c) => c ** 3)\n    );\n}\n\nexport default oklab2rgb;\n","import { unpack } from '../../utils/index.js';\nimport multiplyMatrices from '../../utils/multiply-matrices.js';\nimport { rgb2xyz } from '../lab/rgb2lab.js';\n\nconst rgb2oklab = (...args) => {\n    const [r, g, b, ...rest] = unpack(args, 'rgb');\n    const xyz = rgb2xyz(r, g, b);\n    const oklab = XYZ_to_OKLab(xyz);\n    return [...oklab, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\n// from https://www.w3.org/TR/css-color-4/#color-conversion-code\nfunction XYZ_to_OKLab(XYZ) {\n    // Given XYZ relative to D65, convert to OKLab\n    const XYZtoLMS = [\n        [0.819022437996703, 0.3619062600528904, -0.1288737815209879],\n        [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],\n        [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]\n    ];\n    const LMStoOKLab = [\n        [0.210454268309314, 0.7936177747023054, -0.0040720430116193],\n        [1.9779985324311684, -2.4285922420485799, 0.450593709617411],\n        [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]\n    ];\n\n    const LMS = multiplyMatrices(XYZtoLMS, XYZ);\n    // JavaScript Math.cbrt returns a sign-matched cube root\n    // beware if porting to other languages\n    // especially if tempted to use a general power function\n    return multiplyMatrices(\n        LMStoOKLab,\n        LMS.map((c) => Math.cbrt(c))\n    );\n    // L in range [0,1]. For use in CSS, multiply by 100 and add a percent\n}\n\nexport default rgb2oklab;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklab2rgb from './oklab2rgb.js';\nimport rgb2oklab from './rgb2oklab.js';\n\nColor.prototype.oklab = function () {\n    return rgb2oklab(this._rgb);\n};\n\nconst oklab = (...args) => new Color(...args, 'oklab');\nObject.assign(chroma, { oklab });\n\ninput.format.oklab = oklab2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'oklab');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'oklab';\n        }\n    }\n});\n\nexport { oklab };\n","import '../io/oklab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst oklab = (col1, col2, f) => {\n    const xyz0 = col1.oklab();\n    const xyz1 = col2.oklab();\n    return new Color(\n        xyz0[0] + f * (xyz1[0] - xyz0[0]),\n        xyz0[1] + f * (xyz1[1] - xyz0[1]),\n        xyz0[2] + f * (xyz1[2] - xyz0[2]),\n        'oklab'\n    );\n};\n\n// register interpolator\nindex.oklab = oklab;\n\nexport default oklab;\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst oklch = (col1, col2, f) => {\n    return interpolate_hsx(col1, col2, f, 'oklch');\n};\n\n// register interpolator\nindex.oklch = oklch;\n\nexport default oklch;\n","import Color from '../Color.js';\nimport { clip_rgb } from '../utils/index.js';\n\nconst { pow, sqrt, PI, cos, sin, atan2 } = Math;\n\nexport default (colors, mode = 'lrgb', weights = null) => {\n    const l = colors.length;\n    if (!weights) weights = Array.from(new Array(l)).map(() => 1);\n    // normalize weights\n    const k =\n        l /\n        weights.reduce(function (a, b) {\n            return a + b;\n        });\n    weights.forEach((w, i) => {\n        weights[i] *= k;\n    });\n    // convert colors to Color objects\n    colors = colors.map((c) => new Color(c));\n    if (mode === 'lrgb') {\n        return _average_lrgb(colors, weights);\n    }\n    const first = colors.shift();\n    const xyz = first.get(mode);\n    const cnt = [];\n    let dx = 0;\n    let dy = 0;\n    // initial color\n    for (let i = 0; i < xyz.length; i++) {\n        xyz[i] = (xyz[i] || 0) * weights[0];\n        cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n        if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n            const A = (xyz[i] / 180) * PI;\n            dx += cos(A) * weights[0];\n            dy += sin(A) * weights[0];\n        }\n    }\n\n    let alpha = first.alpha() * weights[0];\n    colors.forEach((c, ci) => {\n        const xyz2 = c.get(mode);\n        alpha += c.alpha() * weights[ci + 1];\n        for (let i = 0; i < xyz.length; i++) {\n            if (!isNaN(xyz2[i])) {\n                cnt[i] += weights[ci + 1];\n                if (mode.charAt(i) === 'h') {\n                    const A = (xyz2[i] / 180) * PI;\n                    dx += cos(A) * weights[ci + 1];\n                    dy += sin(A) * weights[ci + 1];\n                } else {\n                    xyz[i] += xyz2[i] * weights[ci + 1];\n                }\n            }\n        }\n    });\n\n    for (let i = 0; i < xyz.length; i++) {\n        if (mode.charAt(i) === 'h') {\n            let A = (atan2(dy / cnt[i], dx / cnt[i]) / PI) * 180;\n            while (A < 0) A += 360;\n            while (A >= 360) A -= 360;\n            xyz[i] = A;\n        } else {\n            xyz[i] = xyz[i] / cnt[i];\n        }\n    }\n    alpha /= l;\n    return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);\n};\n\nconst _average_lrgb = (colors, weights) => {\n    const l = colors.length;\n    const xyz = [0, 0, 0, 0];\n    for (let i = 0; i < colors.length; i++) {\n        const col = colors[i];\n        const f = weights[i] / l;\n        const rgb = col._rgb;\n        xyz[0] += pow(rgb[0], 2) * f;\n        xyz[1] += pow(rgb[1], 2) * f;\n        xyz[2] += pow(rgb[2], 2) * f;\n        xyz[3] += rgb[3] * f;\n    }\n    xyz[0] = sqrt(xyz[0]);\n    xyz[1] = sqrt(xyz[1]);\n    xyz[2] = sqrt(xyz[2]);\n    if (xyz[3] > 0.9999999) xyz[3] = 1;\n    return new Color(clip_rgb(xyz));\n};\n","// minimal multi-purpose interface\n\n// @requires utils color analyze\nimport chroma from '../chroma.js';\nimport { limit, type } from '../utils/index.js';\n\nconst { pow } = Math;\n\nexport default function (colors) {\n    // constructor\n    let _mode = 'rgb';\n    let _nacol = chroma('#ccc');\n    let _spread = 0;\n    // const _fixed = false;\n    let _positions = [0, 1];\n    let _domain = [0, 1];\n    let _pos = [];\n    let _padding = [0, 0];\n    let _classes = false;\n    let _colors = [];\n    let _out = false;\n    let _min = 0;\n    let _max = 1;\n    let _correctLightness = false;\n    let _colorCache = {};\n    let _useCache = true;\n    let _gamma = 1;\n\n    // private methods\n\n    const setColors = function (colors) {\n        colors = colors || ['#fff', '#000'];\n        if (\n            colors &&\n            type(colors) === 'string' &&\n            chroma.brewer &&\n            chroma.brewer[colors.toLowerCase()]\n        ) {\n            colors = chroma.brewer[colors.toLowerCase()];\n        }\n        if (type(colors) === 'array') {\n            // handle single color\n            if (colors.length === 1) {\n                colors = [colors[0], colors[0]];\n            }\n            // make a copy of the colors\n            colors = colors.slice(0);\n            // convert to chroma classes\n            for (let c = 0; c < colors.length; c++) {\n                colors[c] = chroma(colors[c]);\n            }\n            // auto-fill color position\n            _pos.length = 0;\n            for (let c = 0; c < colors.length; c++) {\n                _pos.push(c / (colors.length - 1));\n            }\n        }\n        resetCache();\n        return (_colors = colors);\n    };\n\n    const getClass = function (value) {\n        if (_classes != null) {\n            const n = _classes.length - 1;\n            let i = 0;\n            while (i < n && value >= _classes[i]) {\n                i++;\n            }\n            return i - 1;\n        }\n        return 0;\n    };\n\n    let tMapLightness = (t) => t;\n    let tMapDomain = (t) => t;\n\n    // const classifyValue = function(value) {\n    //     let val = value;\n    //     if (_classes.length > 2) {\n    //         const n = _classes.length-1;\n    //         const i = getClass(value);\n    //         const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5)));  // center of 1st class\n    //         const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5)));  // center of last class\n    //         val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n    //     }\n    //     return val;\n    // };\n\n    const getColor = function (val, bypassMap) {\n        let col, t;\n        if (bypassMap == null) {\n            bypassMap = false;\n        }\n        if (isNaN(val) || val === null) {\n            return _nacol;\n        }\n        if (!bypassMap) {\n            if (_classes && _classes.length > 2) {\n                // find the class\n                const c = getClass(val);\n                t = c / (_classes.length - 2);\n            } else if (_max !== _min) {\n                // just interpolate between min/max\n                t = (val - _min) / (_max - _min);\n            } else {\n                t = 1;\n            }\n        } else {\n            t = val;\n        }\n\n        // domain map\n        t = tMapDomain(t);\n\n        if (!bypassMap) {\n            t = tMapLightness(t); // lightness correction\n        }\n\n        if (_gamma !== 1) {\n            t = pow(t, _gamma);\n        }\n\n        t = _padding[0] + t * (1 - _padding[0] - _padding[1]);\n\n        t = limit(t, 0, 1);\n\n        const k = Math.floor(t * 10000);\n\n        if (_useCache && _colorCache[k]) {\n            col = _colorCache[k];\n        } else {\n            if (type(_colors) === 'array') {\n                //for i in [0.._pos.length-1]\n                for (let i = 0; i < _pos.length; i++) {\n                    const p = _pos[i];\n                    if (t <= p) {\n                        col = _colors[i];\n                        break;\n                    }\n                    if (t >= p && i === _pos.length - 1) {\n                        col = _colors[i];\n                        break;\n                    }\n                    if (t > p && t < _pos[i + 1]) {\n                        t = (t - p) / (_pos[i + 1] - p);\n                        col = chroma.interpolate(\n                            _colors[i],\n                            _colors[i + 1],\n                            t,\n                            _mode\n                        );\n                        break;\n                    }\n                }\n            } else if (type(_colors) === 'function') {\n                col = _colors(t);\n            }\n            if (_useCache) {\n                _colorCache[k] = col;\n            }\n        }\n        return col;\n    };\n\n    var resetCache = () => (_colorCache = {});\n\n    setColors(colors);\n\n    // public interface\n\n    const f = function (v) {\n        const c = chroma(getColor(v));\n        if (_out && c[_out]) {\n            return c[_out]();\n        } else {\n            return c;\n        }\n    };\n\n    f.classes = function (classes) {\n        if (classes != null) {\n            if (type(classes) === 'array') {\n                _classes = classes;\n                _positions = [classes[0], classes[classes.length - 1]];\n            } else {\n                const d = chroma.analyze(_positions);\n                if (classes === 0) {\n                    _classes = [d.min, d.max];\n                } else {\n                    _classes = chroma.limits(d, 'e', classes);\n                }\n            }\n            return f;\n        }\n        return _classes;\n    };\n\n    f.domain = function (domain) {\n        if (!arguments.length) {\n            // return original domain\n            return _domain;\n        }\n        // store original domain so we can return it later\n        _domain = domain.slice(0);\n        _min = domain[0];\n        _max = domain[domain.length - 1];\n        _pos = [];\n        const k = _colors.length;\n        if (domain.length === k && _min !== _max) {\n            // update positions\n            for (let d of Array.from(domain)) {\n                _pos.push((d - _min) / (_max - _min));\n            }\n        } else {\n            for (let c = 0; c < k; c++) {\n                _pos.push(c / (k - 1));\n            }\n            if (domain.length > 2) {\n                // set domain map\n                const tOut = domain.map((d, i) => i / (domain.length - 1));\n                const tBreaks = domain.map((d) => (d - _min) / (_max - _min));\n                if (!tBreaks.every((val, i) => tOut[i] === val)) {\n                    tMapDomain = (t) => {\n                        if (t <= 0 || t >= 1) return t;\n                        let i = 0;\n                        while (t >= tBreaks[i + 1]) i++;\n                        const f =\n                            (t - tBreaks[i]) / (tBreaks[i + 1] - tBreaks[i]);\n                        const out = tOut[i] + f * (tOut[i + 1] - tOut[i]);\n                        return out;\n                    };\n                }\n            }\n        }\n        _positions = [_min, _max];\n        return f;\n    };\n\n    f.mode = function (_m) {\n        if (!arguments.length) {\n            return _mode;\n        }\n        _mode = _m;\n        resetCache();\n        return f;\n    };\n\n    f.range = function (colors, _pos) {\n        setColors(colors, _pos);\n        return f;\n    };\n\n    f.out = function (_o) {\n        _out = _o;\n        return f;\n    };\n\n    f.spread = function (val) {\n        if (!arguments.length) {\n            return _spread;\n        }\n        _spread = val;\n        return f;\n    };\n\n    f.correctLightness = function (v) {\n        if (v == null) {\n            v = true;\n        }\n        _correctLightness = v;\n        resetCache();\n        if (_correctLightness) {\n            tMapLightness = function (t) {\n                const L0 = getColor(0, true).lab()[0];\n                const L1 = getColor(1, true).lab()[0];\n                const pol = L0 > L1;\n                let L_actual = getColor(t, true).lab()[0];\n                const L_ideal = L0 + (L1 - L0) * t;\n                let L_diff = L_actual - L_ideal;\n                let t0 = 0;\n                let t1 = 1;\n                let max_iter = 20;\n                while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n                    (function () {\n                        if (pol) {\n                            L_diff *= -1;\n                        }\n                        if (L_diff < 0) {\n                            t0 = t;\n                            t += (t1 - t) * 0.5;\n                        } else {\n                            t1 = t;\n                            t += (t0 - t) * 0.5;\n                        }\n                        L_actual = getColor(t, true).lab()[0];\n                        return (L_diff = L_actual - L_ideal);\n                    })();\n                }\n                return t;\n            };\n        } else {\n            tMapLightness = (t) => t;\n        }\n        return f;\n    };\n\n    f.padding = function (p) {\n        if (p != null) {\n            if (type(p) === 'number') {\n                p = [p, p];\n            }\n            _padding = p;\n            return f;\n        } else {\n            return _padding;\n        }\n    };\n\n    f.colors = function (numColors, out) {\n        // If no arguments are given, return the original colors that were provided\n        if (arguments.length < 2) {\n            out = 'hex';\n        }\n        let result = [];\n\n        if (arguments.length === 0) {\n            result = _colors.slice(0);\n        } else if (numColors === 1) {\n            result = [f(0.5)];\n        } else if (numColors > 1) {\n            const dm = _positions[0];\n            const dd = _positions[1] - dm;\n            result = __range__(0, numColors, false).map((i) =>\n                f(dm + (i / (numColors - 1)) * dd)\n            );\n        } else {\n            // returns all colors based on the defined classes\n            colors = [];\n            let samples = [];\n            if (_classes && _classes.length > 2) {\n                for (\n                    let i = 1, end = _classes.length, asc = 1 <= end;\n                    asc ? i < end : i > end;\n                    asc ? i++ : i--\n                ) {\n                    samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n                }\n            } else {\n                samples = _positions;\n            }\n            result = samples.map((v) => f(v));\n        }\n\n        if (chroma[out]) {\n            result = result.map((c) => c[out]());\n        }\n        return result;\n    };\n\n    f.cache = function (c) {\n        if (c != null) {\n            _useCache = c;\n            return f;\n        } else {\n            return _useCache;\n        }\n    };\n\n    f.gamma = function (g) {\n        if (g != null) {\n            _gamma = g;\n            return f;\n        } else {\n            return _gamma;\n        }\n    };\n\n    f.nodata = function (d) {\n        if (d != null) {\n            _nacol = chroma(d);\n            return f;\n        } else {\n            return _nacol;\n        }\n    };\n\n    return f;\n}\n\nfunction __range__(left, right, inclusive) {\n    let range = [];\n    let ascending = left < right;\n    let end = !inclusive ? right : ascending ? right + 1 : right - 1;\n    for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n        range.push(i);\n    }\n    return range;\n}\n","//\n// interpolates between a set of colors uzing a bezier spline\n//\n\n// @requires utils lab\nimport Color from '../Color.js';\nimport '../io/lab/index.js';\nimport scale from './scale.js';\n\n// nth row of the pascal triangle\nconst binom_row = function (n) {\n    let row = [1, 1];\n    for (let i = 1; i < n; i++) {\n        let newrow = [1];\n        for (let j = 1; j <= row.length; j++) {\n            newrow[j] = (row[j] || 0) + row[j - 1];\n        }\n        row = newrow;\n    }\n    return row;\n};\n\nconst bezier = function (colors) {\n    let I, lab0, lab1, lab2;\n    colors = colors.map((c) => new Color(c));\n    if (colors.length === 2) {\n        // linear interpolation\n        [lab0, lab1] = colors.map((c) => c.lab());\n        I = function (t) {\n            const lab = [0, 1, 2].map((i) => lab0[i] + t * (lab1[i] - lab0[i]));\n            return new Color(lab, 'lab');\n        };\n    } else if (colors.length === 3) {\n        // quadratic bezier interpolation\n        [lab0, lab1, lab2] = colors.map((c) => c.lab());\n        I = function (t) {\n            const lab = [0, 1, 2].map(\n                (i) =>\n                    (1 - t) * (1 - t) * lab0[i] +\n                    2 * (1 - t) * t * lab1[i] +\n                    t * t * lab2[i]\n            );\n            return new Color(lab, 'lab');\n        };\n    } else if (colors.length === 4) {\n        // cubic bezier interpolation\n        let lab3;\n        [lab0, lab1, lab2, lab3] = colors.map((c) => c.lab());\n        I = function (t) {\n            const lab = [0, 1, 2].map(\n                (i) =>\n                    (1 - t) * (1 - t) * (1 - t) * lab0[i] +\n                    3 * (1 - t) * (1 - t) * t * lab1[i] +\n                    3 * (1 - t) * t * t * lab2[i] +\n                    t * t * t * lab3[i]\n            );\n            return new Color(lab, 'lab');\n        };\n    } else if (colors.length >= 5) {\n        // general case (degree n bezier)\n        let labs, row, n;\n        labs = colors.map((c) => c.lab());\n        n = colors.length - 1;\n        row = binom_row(n);\n        I = function (t) {\n            const u = 1 - t;\n            const lab = [0, 1, 2].map((i) =>\n                labs.reduce(\n                    (sum, el, j) =>\n                        sum + row[j] * u ** (n - j) * t ** j * el[i],\n                    0\n                )\n            );\n            return new Color(lab, 'lab');\n        };\n    } else {\n        throw new RangeError('No point in running bezier with only one color.');\n    }\n    return I;\n};\n\nexport default (colors) => {\n    const f = bezier(colors);\n    f.scale = () => scale(f);\n    return f;\n};\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nconst { round } = Math;\n\nColor.prototype.rgb = function (rnd = true) {\n    if (rnd === false) return this._rgb.slice(0, 3);\n    return this._rgb.slice(0, 3).map(round);\n};\n\nColor.prototype.rgba = function (rnd = true) {\n    return this._rgb.slice(0, 4).map((v, i) => {\n        return i < 3 ? (rnd === false ? v : round(v)) : v;\n    });\n};\n\nconst rgb = (...args) => new Color(...args, 'rgb');\nObject.assign(chroma, { rgb });\n\ninput.format.rgb = (...args) => {\n    const rgba = unpack(args, 'rgba');\n    if (rgba[3] === undefined) rgba[3] = 1;\n    return rgba;\n};\n\ninput.autodetect.push({\n    p: 3,\n    test: (...args) => {\n        args = unpack(args, 'rgba');\n        if (\n            type(args) === 'array' &&\n            (args.length === 3 ||\n                (args.length === 4 &&\n                    type(args[3]) == 'number' &&\n                    args[3] >= 0 &&\n                    args[3] <= 1))\n        ) {\n            return 'rgb';\n        }\n    }\n});\n\nexport { rgb };\n","/*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from https://web.archive.org/web/20180110014946/http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\nimport '../io/rgb/index.js';\nimport chroma from '../chroma.js';\n\nconst blend = (bottom, top, mode) => {\n    if (!blend[mode]) {\n        throw new Error('unknown blend mode ' + mode);\n    }\n    return blend[mode](bottom, top);\n};\n\nconst blend_f = (f) => (bottom, top) => {\n    const c0 = chroma(top).rgb();\n    const c1 = chroma(bottom).rgb();\n    return chroma.rgb(f(c0, c1));\n};\n\nconst each = (f) => (c0, c1) => {\n    const out = [];\n    out[0] = f(c0[0], c1[0]);\n    out[1] = f(c0[1], c1[1]);\n    out[2] = f(c0[2], c1[2]);\n    return out;\n};\n\nconst normal = (a) => a;\nconst multiply = (a, b) => (a * b) / 255;\nconst darken = (a, b) => (a > b ? b : a);\nconst lighten = (a, b) => (a > b ? a : b);\nconst screen = (a, b) => 255 * (1 - (1 - a / 255) * (1 - b / 255));\nconst overlay = (a, b) =>\n    b < 128 ? (2 * a * b) / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\nconst burn = (a, b) => 255 * (1 - (1 - b / 255) / (a / 255));\nconst dodge = (a, b) => {\n    if (a === 255) return 255;\n    a = (255 * (b / 255)) / (1 - a / 255);\n    return a > 255 ? 255 : a;\n};\n\n// # add = (a,b) ->\n// #     if (a + b > 255) then 255 else a + b\n\nblend.normal = blend_f(each(normal));\nblend.multiply = blend_f(each(multiply));\nblend.screen = blend_f(each(screen));\nblend.overlay = blend_f(each(overlay));\nblend.darken = blend_f(each(darken));\nblend.lighten = blend_f(each(lighten));\nblend.dodge = blend_f(each(dodge));\nblend.burn = blend_f(each(burn));\n// blend.add = blend_f(each(add));\n\nexport default blend;\n","// cubehelix interpolation\n// based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n// http://astron-soc.in/bulletin/11June/289392011.pdf\nimport { type, clip_rgb, TWOPI } from '../utils/index.js';\nimport chroma from '../chroma.js';\nconst { pow, sin, cos } = Math;\n\nexport default function (\n    start = 300,\n    rotations = -1.5,\n    hue = 1,\n    gamma = 1,\n    lightness = [0, 1]\n) {\n    let dh = 0,\n        dl;\n    if (type(lightness) === 'array') {\n        dl = lightness[1] - lightness[0];\n    } else {\n        dl = 0;\n        lightness = [lightness, lightness];\n    }\n    const f = function (fract) {\n        const a = TWOPI * ((start + 120) / 360 + rotations * fract);\n        const l = pow(lightness[0] + dl * fract, gamma);\n        const h = dh !== 0 ? hue[0] + fract * dh : hue;\n        const amp = (h * l * (1 - l)) / 2;\n        const cos_a = cos(a);\n        const sin_a = sin(a);\n        const r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n        const g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n        const b = l + amp * (+1.97294 * cos_a);\n        return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n    };\n    f.start = function (s) {\n        if (s == null) {\n            return start;\n        }\n        start = s;\n        return f;\n    };\n    f.rotations = function (r) {\n        if (r == null) {\n            return rotations;\n        }\n        rotations = r;\n        return f;\n    };\n    f.gamma = function (g) {\n        if (g == null) {\n            return gamma;\n        }\n        gamma = g;\n        return f;\n    };\n    f.hue = function (h) {\n        if (h == null) {\n            return hue;\n        }\n        hue = h;\n        if (type(hue) === 'array') {\n            dh = hue[1] - hue[0];\n            if (dh === 0) {\n                hue = hue[1];\n            }\n        } else {\n            dh = 0;\n        }\n        return f;\n    };\n    f.lightness = function (h) {\n        if (h == null) {\n            return lightness;\n        }\n        if (type(h) === 'array') {\n            lightness = h;\n            dl = h[1] - h[0];\n        } else {\n            lightness = [h, h];\n            dl = 0;\n        }\n        return f;\n    };\n    f.scale = () => chroma.scale(f);\n    f.hue(hue);\n    return f;\n}\n","import Color from '../Color.js';\nconst digits = '0123456789abcdef';\n\nconst { floor, random } = Math;\n\n/**\n * Generates a random color.\n * @param {() => number} rng - A random number generator function.\n */\nexport default (rng = random) => {\n    let code = '#';\n    for (let i = 0; i < 6; i++) {\n        code += digits.charAt(floor(rng() * 16));\n    }\n    return new Color(code, 'hex');\n};\n","import type from './type.js';\n\nconst { log, pow, floor, abs } = Math;\n\nexport function analyze(data, key = null) {\n    const r = {\n        min: Number.MAX_VALUE,\n        max: Number.MAX_VALUE * -1,\n        sum: 0,\n        values: [],\n        count: 0\n    };\n    if (type(data) === 'object') {\n        data = Object.values(data);\n    }\n    data.forEach((val) => {\n        if (key && type(val) === 'object') val = val[key];\n        if (val !== undefined && val !== null && !isNaN(val)) {\n            r.values.push(val);\n            r.sum += val;\n            if (val < r.min) r.min = val;\n            if (val > r.max) r.max = val;\n            r.count += 1;\n        }\n    });\n\n    r.domain = [r.min, r.max];\n\n    r.limits = (mode, num) => limits(r, mode, num);\n\n    return r;\n}\n\nexport function limits(data, mode = 'equal', num = 7) {\n    if (type(data) == 'array') {\n        data = analyze(data);\n    }\n    const { min, max } = data;\n    const values = data.values.sort((a, b) => a - b);\n\n    if (num === 1) {\n        return [min, max];\n    }\n\n    const limits = [];\n\n    if (mode.substr(0, 1) === 'c') {\n        // continuous\n        limits.push(min);\n        limits.push(max);\n    }\n\n    if (mode.substr(0, 1) === 'e') {\n        // equal interval\n        limits.push(min);\n        for (let i = 1; i < num; i++) {\n            limits.push(min + (i / num) * (max - min));\n        }\n        limits.push(max);\n    } else if (mode.substr(0, 1) === 'l') {\n        // log scale\n        if (min <= 0) {\n            throw new Error(\n                'Logarithmic scales are only possible for values > 0'\n            );\n        }\n        const min_log = Math.LOG10E * log(min);\n        const max_log = Math.LOG10E * log(max);\n        limits.push(min);\n        for (let i = 1; i < num; i++) {\n            limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n        }\n        limits.push(max);\n    } else if (mode.substr(0, 1) === 'q') {\n        // quantile scale\n        limits.push(min);\n        for (let i = 1; i < num; i++) {\n            const p = ((values.length - 1) * i) / num;\n            const pb = floor(p);\n            if (pb === p) {\n                limits.push(values[pb]);\n            } else {\n                // p > pb\n                const pr = p - pb;\n                limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n            }\n        }\n        limits.push(max);\n    } else if (mode.substr(0, 1) === 'k') {\n        // k-means clustering\n        /*\n        implementation based on\n        http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n        simplified for 1-d input values\n        */\n        let cluster;\n        const n = values.length;\n        const assignments = new Array(n);\n        const clusterSizes = new Array(num);\n        let repeat = true;\n        let nb_iters = 0;\n        let centroids = null;\n\n        // get seed values\n        centroids = [];\n        centroids.push(min);\n        for (let i = 1; i < num; i++) {\n            centroids.push(min + (i / num) * (max - min));\n        }\n        centroids.push(max);\n\n        while (repeat) {\n            // assignment step\n            for (let j = 0; j < num; j++) {\n                clusterSizes[j] = 0;\n            }\n            for (let i = 0; i < n; i++) {\n                const value = values[i];\n                let mindist = Number.MAX_VALUE;\n                let best;\n                for (let j = 0; j < num; j++) {\n                    const dist = abs(centroids[j] - value);\n                    if (dist < mindist) {\n                        mindist = dist;\n                        best = j;\n                    }\n                    clusterSizes[best]++;\n                    assignments[i] = best;\n                }\n            }\n\n            // update centroids step\n            const newCentroids = new Array(num);\n            for (let j = 0; j < num; j++) {\n                newCentroids[j] = null;\n            }\n            for (let i = 0; i < n; i++) {\n                cluster = assignments[i];\n                if (newCentroids[cluster] === null) {\n                    newCentroids[cluster] = values[i];\n                } else {\n                    newCentroids[cluster] += values[i];\n                }\n            }\n            for (let j = 0; j < num; j++) {\n                newCentroids[j] *= 1 / clusterSizes[j];\n            }\n\n            // check convergence\n            repeat = false;\n            for (let j = 0; j < num; j++) {\n                if (newCentroids[j] !== centroids[j]) {\n                    repeat = true;\n                    break;\n                }\n            }\n\n            centroids = newCentroids;\n            nb_iters++;\n\n            if (nb_iters > 200) {\n                repeat = false;\n            }\n        }\n\n        // finished k-means clustering\n        // the next part is borrowed from gabrielflor.it\n        const kClusters = {};\n        for (let j = 0; j < num; j++) {\n            kClusters[j] = [];\n        }\n        for (let i = 0; i < n; i++) {\n            cluster = assignments[i];\n            kClusters[cluster].push(values[i]);\n        }\n        let tmpKMeansBreaks = [];\n        for (let j = 0; j < num; j++) {\n            tmpKMeansBreaks.push(kClusters[j][0]);\n            tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n        }\n        tmpKMeansBreaks = tmpKMeansBreaks.sort((a, b) => a - b);\n        limits.push(tmpKMeansBreaks[0]);\n        for (let i = 1; i < tmpKMeansBreaks.length; i += 2) {\n            const v = tmpKMeansBreaks[i];\n            if (!isNaN(v) && limits.indexOf(v) === -1) {\n                limits.push(v);\n            }\n        }\n    }\n    return limits;\n}\n","import Color from '../Color.js';\nimport '../ops/luminance.js';\n\nexport default (a, b) => {\n    // WCAG contrast ratio\n    // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n    a = new Color(a);\n    b = new Color(b);\n    const l1 = a.luminance();\n    const l2 = b.luminance();\n    return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n};\n","import Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\n/**\n * @license\n *\n * The APCA contrast prediction algorithm is based of the formulas published\n * in the APCA-1.0.98G specification by Myndex. The specification is available at:\n * https://raw.githubusercontent.com/Myndex/apca-w3/master/images/APCAw3_0.1.17_APCA0.0.98G.svg\n *\n * Note that the APCA implementation is still beta, so please update to\n * future versions of chroma.js when they become available.\n *\n * You can read more about the APCA Readability Criterion at\n * https://readtech.org/ARC/\n */\n\n// constants\nconst W_offset = 0.027;\nconst P_in = 0.0005;\nconst P_out = 0.1;\nconst R_scale = 1.14;\nconst B_threshold = 0.022;\nconst B_exp = 1.414;\n\nexport default (text, bg) => {\n    // parse input colors\n    text = new Color(text);\n    bg = new Color(bg);\n    // if text color has alpha, blend against background\n    if (text.alpha() < 1) {\n        text = mix(bg, text, text.alpha(), 'rgb');\n    }\n    const l_text = lum(...text.rgb());\n    const l_bg = lum(...bg.rgb());\n\n    // soft clamp black levels\n    const Y_text =\n        l_text >= B_threshold\n            ? l_text\n            : l_text + Math.pow(B_threshold - l_text, B_exp);\n    const Y_bg =\n        l_bg >= B_threshold ? l_bg : l_bg + Math.pow(B_threshold - l_bg, B_exp);\n\n    // normal polarity (dark text on light background)\n    const S_norm = Math.pow(Y_bg, 0.56) - Math.pow(Y_text, 0.57);\n    // reverse polarity (light text on dark background)\n    const S_rev = Math.pow(Y_bg, 0.65) - Math.pow(Y_text, 0.62);\n    // clamp noise then scale\n    const C =\n        Math.abs(Y_bg - Y_text) < P_in\n            ? 0\n            : Y_text < Y_bg\n              ? S_norm * R_scale\n              : S_rev * R_scale;\n    // clamp minimum contrast then offset\n    const S_apc = Math.abs(C) < P_out ? 0 : C > 0 ? C - W_offset : C + W_offset;\n    // scale to 100\n    return S_apc * 100;\n};\n\nfunction lum(r, g, b) {\n    return (\n        0.2126729 * Math.pow(r / 255, 2.4) +\n        0.7151522 * Math.pow(g / 255, 2.4) +\n        0.072175 * Math.pow(b / 255, 2.4)\n    );\n}\n","import Color from '../Color.js';\nconst { sqrt, pow, min, max, atan2, abs, cos, sin, exp, PI } = Math;\n\nexport default function (a, b, Kl = 1, Kc = 1, Kh = 1) {\n    // Delta E (CIE 2000)\n    // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n    var rad2deg = function (rad) {\n        return (360 * rad) / (2 * PI);\n    };\n    var deg2rad = function (deg) {\n        return (2 * PI * deg) / 360;\n    };\n    a = new Color(a);\n    b = new Color(b);\n    const [L1, a1, b1] = Array.from(a.lab());\n    const [L2, a2, b2] = Array.from(b.lab());\n    const avgL = (L1 + L2) / 2;\n    const C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n    const C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n    const avgC = (C1 + C2) / 2;\n    const G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7))));\n    const a1p = a1 * (1 + G);\n    const a2p = a2 * (1 + G);\n    const C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n    const C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n    const avgCp = (C1p + C2p) / 2;\n    const arctan1 = rad2deg(atan2(b1, a1p));\n    const arctan2 = rad2deg(atan2(b2, a2p));\n    const h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n    const h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n    const avgHp =\n        abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2;\n    const T =\n        1 -\n        0.17 * cos(deg2rad(avgHp - 30)) +\n        0.24 * cos(deg2rad(2 * avgHp)) +\n        0.32 * cos(deg2rad(3 * avgHp + 6)) -\n        0.2 * cos(deg2rad(4 * avgHp - 63));\n    let deltaHp = h2p - h1p;\n    deltaHp =\n        abs(deltaHp) <= 180\n            ? deltaHp\n            : h2p <= h1p\n              ? deltaHp + 360\n              : deltaHp - 360;\n    deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2);\n    const deltaL = L2 - L1;\n    const deltaCp = C2p - C1p;\n    const sl = 1 + (0.015 * pow(avgL - 50, 2)) / sqrt(20 + pow(avgL - 50, 2));\n    const sc = 1 + 0.045 * avgCp;\n    const sh = 1 + 0.015 * avgCp * T;\n    const deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2));\n    const Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7)));\n    const Rt = -Rc * sin(2 * deg2rad(deltaTheta));\n    const result = sqrt(\n        pow(deltaL / (Kl * sl), 2) +\n            pow(deltaCp / (Kc * sc), 2) +\n            pow(deltaHp / (Kh * sh), 2) +\n            Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh))\n    );\n    return max(0, min(100, result));\n}\n","import Color from '../Color.js';\n\n// simple Euclidean distance\nexport default function (a, b, mode = 'lab') {\n    // Delta E (CIE 1976)\n    // see http://www.brucelindbloom.com/index.html?Equations.html\n    a = new Color(a);\n    b = new Color(b);\n    const l1 = a.get(mode);\n    const l2 = b.get(mode);\n    let sum_sq = 0;\n    for (let i in l1) {\n        const d = (l1[i] || 0) - (l2[i] || 0);\n        sum_sq += d * d;\n    }\n    return Math.sqrt(sum_sq);\n}\n","import Color from '../Color.js';\n\nexport default (...args) => {\n    try {\n        new Color(...args);\n        return true;\n        // eslint-disable-next-line\n    } catch (e) {\n        return false;\n    }\n};\n","// some pre-defined color scales:\nimport chroma from '../chroma.js';\nimport '../io/hsl/index.js';\nimport scale from '../generator/scale.js';\n\nexport default {\n    cool() {\n        return scale([chroma.hsl(180, 1, 0.9), chroma.hsl(250, 0.7, 0.4)]);\n    },\n    hot() {\n        return scale(['#000', '#f00', '#ff0', '#fff'], [0, 0.25, 0.75, 1]).mode(\n            'rgb'\n        );\n    }\n};\n","/**\n    ColorBrewer colors for chroma.js\n\n    Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n    Pennsylvania State University.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software distributed\n    under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n    CONDITIONS OF ANY KIND, either express or implied. See the License for the\n    specific language governing permissions and limitations under the License.\n*/\n\nconst colorbrewer = {\n    // sequential\n    OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n    PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n    BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n    Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n    BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n    YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n    YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n    Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n    RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n    Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n    YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n    Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n    GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n    Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n    YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n    PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n    Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n    PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n    Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n    // diverging\n    Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n    RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n    RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n    PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n    PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n    RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n    BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n    RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n    PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n    // qualitative\n    Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n    Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n    Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n    Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n    Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n    Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n    Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n    Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n};\n\nconst colorbrewerTypes = Object.keys(colorbrewer);\nconst typeMap = new Map(colorbrewerTypes.map((key) => [key.toLowerCase(), key]));\n\n// use Proxy to allow case-insensitive access to palettes\nconst colorbrewerProxy =\n    typeof Proxy === 'function'\n        ? new Proxy(colorbrewer, {\n              get(target, prop) {\n                  const lower = prop.toLowerCase();\n                  if (typeMap.has(lower)) {\n                      return target[typeMap.get(lower)];\n                  }\n              },\n              getOwnPropertyNames() {\n                  return Object.getOwnPropertyNames(colorbrewerTypes);\n              }\n          })\n        : colorbrewer;\n\nexport default colorbrewerProxy;\n","import { unpack } from '../../utils/index.js';\n\nconst cmyk2rgb = (...args) => {\n    args = unpack(args, 'cmyk');\n    const [c, m, y, k] = args;\n    const alpha = args.length > 4 ? args[4] : 1;\n    if (k === 1) return [0, 0, 0, alpha];\n    return [\n        c >= 1 ? 0 : 255 * (1 - c) * (1 - k), // r\n        m >= 1 ? 0 : 255 * (1 - m) * (1 - k), // g\n        y >= 1 ? 0 : 255 * (1 - y) * (1 - k), // b\n        alpha\n    ];\n};\n\nexport default cmyk2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { max } = Math;\n\nconst rgb2cmyk = (...args) => {\n    let [r, g, b] = unpack(args, 'rgb');\n    r = r / 255;\n    g = g / 255;\n    b = b / 255;\n    const k = 1 - max(r, max(g, b));\n    const f = k < 1 ? 1 / (1 - k) : 0;\n    const c = (1 - r - k) * f;\n    const m = (1 - g - k) * f;\n    const y = (1 - b - k) * f;\n    return [c, m, y, k];\n};\n\nexport default rgb2cmyk;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nimport cmyk2rgb from './cmyk2rgb.js';\nimport rgb2cmyk from './rgb2cmyk.js';\n\nColor.prototype.cmyk = function () {\n    return rgb2cmyk(this._rgb);\n};\n\nconst cmyk = (...args) => new Color(...args, 'cmyk');\nObject.assign(chroma, { cmyk });\n\ninput.format.cmyk = cmyk2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'cmyk');\n        if (type(args) === 'array' && args.length === 4) {\n            return 'cmyk';\n        }\n    }\n});\n\nexport { cmyk };\n","import { unpack, last, rnd2 } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\nconst hsl2css = (...args) => {\n    const hsla = unpack(args, 'hsla');\n    let mode = last(args) || 'lsa';\n    hsla[0] = rnd2(hsla[0] || 0) + 'deg';\n    hsla[1] = rnd2(hsla[1] * 100) + '%';\n    hsla[2] = rnd2(hsla[2] * 100) + '%';\n    if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) {\n        hsla[3] = '/ ' + (hsla.length > 3 ? hsla[3] : 1);\n        mode = 'hsla';\n    } else {\n        hsla.length = 3;\n    }\n    return `${mode.substr(0, 3)}(${hsla.join(' ')})`;\n};\n\nexport default hsl2css;\n","import { unpack, last, rnd2 } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - lab2css(l,a,b)\n * - lab2css(l,a,b,alpha)\n * - lab2css([l,a,b], mode)\n * - lab2css([l,a,b,alpha], mode)\n */\nconst lab2css = (...args) => {\n    const laba = unpack(args, 'lab');\n    let mode = last(args) || 'lab';\n    laba[0] = rnd2(laba[0]) + '%';\n    laba[1] = rnd2(laba[1]);\n    laba[2] = rnd2(laba[2]);\n    if (mode === 'laba' || (laba.length > 3 && laba[3] < 1)) {\n        laba[3] = '/ ' + (laba.length > 3 ? laba[3] : 1);\n    } else {\n        laba.length = 3;\n    }\n    return `lab(${laba.join(' ')})`;\n};\n\nexport default lab2css;\n","import { unpack, last, rnd2 } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - lab2css(l,a,b)\n * - lab2css(l,a,b,alpha)\n * - lab2css([l,a,b], mode)\n * - lab2css([l,a,b,alpha], mode)\n */\nconst lch2css = (...args) => {\n    const lcha = unpack(args, 'lch');\n    let mode = last(args) || 'lab';\n    lcha[0] = rnd2(lcha[0]) + '%';\n    lcha[1] = rnd2(lcha[1]);\n    lcha[2] = isNaN(lcha[2]) ? 'none' : rnd2(lcha[2]) + 'deg'; // add deg unit to hue\n    if (mode === 'lcha' || (lcha.length > 3 && lcha[3] < 1)) {\n        lcha[3] = '/ ' + (lcha.length > 3 ? lcha[3] : 1);\n    } else {\n        lcha.length = 3;\n    }\n    return `lch(${lcha.join(' ')})`;\n};\n\nexport default lch2css;\n","import { unpack, rnd2, rnd3 } from '../../utils/index.js';\n\nconst oklab2css = (...args) => {\n    const laba = unpack(args, 'lab');\n    laba[0] = rnd2(laba[0] * 100) + '%';\n    laba[1] = rnd3(laba[1]);\n    laba[2] = rnd3(laba[2]);\n    if (laba.length > 3 && laba[3] < 1) {\n        laba[3] = '/ ' + (laba.length > 3 ? laba[3] : 1);\n    } else {\n        laba.length = 3;\n    }\n    return `oklab(${laba.join(' ')})`;\n};\n\nexport default oklab2css;\n","import { unpack } from '../../utils/index.js';\nimport rgb2oklab from '../oklab/rgb2oklab.js';\nimport lab2lch from '../lch/lab2lch.js';\n\nconst rgb2oklch = (...args) => {\n    const [r, g, b, ...rest] = unpack(args, 'rgb');\n    const [l, a, b_] = rgb2oklab(r, g, b);\n    const [L, c, h] = lab2lch(l, a, b_);\n    return [L, c, h, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nexport default rgb2oklch;\n","import { unpack, rnd2, rnd3 } from '../../utils/index.js';\n\nconst oklch2css = (...args) => {\n    const lcha = unpack(args, 'lch');\n    lcha[0] = rnd2(lcha[0] * 100) + '%';\n    lcha[1] = rnd3(lcha[1]);\n    lcha[2] = isNaN(lcha[2]) ? 'none' : rnd2(lcha[2]) + 'deg'; // add deg unit to hue\n    if (lcha.length > 3 && lcha[3] < 1) {\n        lcha[3] = '/ ' + (lcha.length > 3 ? lcha[3] : 1);\n    } else {\n        lcha.length = 3;\n    }\n    return `oklch(${lcha.join(' ')})`;\n};\n\nexport default oklch2css;\n","import { unpack, last } from '../../utils/index.js';\nimport hsl2css from './hsl2css.js';\nimport rgb2hsl from '../hsl/rgb2hsl.js';\nimport lab2css from './lab2css.js';\nimport rgb2lab from '../lab/rgb2lab.js';\nimport lch2css from './lch2css.js';\nimport rgb2lch from '../lch/rgb2lch.js';\nimport rgb2oklab from '../oklab/rgb2oklab.js';\nimport oklab2css from './oklab2css.js';\nimport rgb2oklch from '../oklch/rgb2oklch.js';\nimport oklch2css from './oklch2css.js';\nimport { getLabWhitePoint, setLabWhitePoint } from '../lab/lab-constants.js';\nconst { round } = Math;\n\n/*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\nconst rgb2css = (...args) => {\n    const rgba = unpack(args, 'rgba');\n    let mode = last(args) || 'rgb';\n    if (mode.substr(0, 3) === 'hsl') {\n        return hsl2css(rgb2hsl(rgba), mode);\n    }\n    if (mode.substr(0, 3) === 'lab') {\n        // change to D50 lab whitepoint since this is what W3C is using for CSS Lab colors\n        const prevWhitePoint = getLabWhitePoint();\n        setLabWhitePoint('d50');\n        const cssColor = lab2css(rgb2lab(rgba), mode);\n        setLabWhitePoint(prevWhitePoint);\n        return cssColor;\n    }\n    if (mode.substr(0, 3) === 'lch') {\n        // change to D50 lab whitepoint since this is what W3C is using for CSS Lab colors\n        const prevWhitePoint = getLabWhitePoint();\n        setLabWhitePoint('d50');\n        const cssColor = lch2css(rgb2lch(rgba), mode);\n        setLabWhitePoint(prevWhitePoint);\n        return cssColor;\n    }\n    if (mode.substr(0, 5) === 'oklab') {\n        return oklab2css(rgb2oklab(rgba));\n    }\n    if (mode.substr(0, 5) === 'oklch') {\n        return oklch2css(rgb2oklch(rgba));\n    }\n    rgba[0] = round(rgba[0]);\n    rgba[1] = round(rgba[1]);\n    rgba[2] = round(rgba[2]);\n    if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) {\n        rgba[3] = '/ ' + (rgba.length > 3 ? rgba[3] : 1);\n        mode = 'rgba';\n    }\n    return `${mode.substr(0, 3)}(${rgba.slice(0, mode === 'rgb' ? 3 : 4).join(' ')})`;\n};\n\nexport default rgb2css;\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from '../lch/lch2lab.js';\nimport oklab2rgb from '../oklab/oklab2rgb.js';\n\nconst oklch2rgb = (...args) => {\n    args = unpack(args, 'lch');\n    const [l, c, h, ...rest] = args;\n    const [L, a, b_] = lch2lab(l, c, h);\n    const [r, g, b] = oklab2rgb(L, a, b_);\n    return [r, g, b, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nexport default oklch2rgb;\n","import hsl2rgb from '../hsl/hsl2rgb.js';\nimport lab2rgb from '../lab/lab2rgb.js';\nimport lch2rgb from '../lch/lch2rgb.js';\nimport oklab2rgb from '../oklab/oklab2rgb.js';\nimport oklch2rgb from '../oklch/oklch2rgb.js';\nimport input from '../input.js';\nimport limit from '../../utils/limit.js';\nimport { getLabWhitePoint, setLabWhitePoint } from '../lab/lab-constants.js';\n\nconst INT_OR_PCT = /((?:-?\\d+)|(?:-?\\d+(?:\\.\\d+)?)%|none)/.source;\nconst FLOAT_OR_PCT = /((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)%?)|none)/.source;\nconst PCT = /((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)%)|none)/.source;\nconst RE_S = /\\s*/.source;\nconst SEP = /\\s+/.source;\nconst COMMA = /\\s*,\\s*/.source;\nconst ANLGE = /((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:deg)?)|none)/.source;\nconst ALPHA = /\\s*(?:\\/\\s*((?:[01]|[01]?\\.\\d+)|\\d+(?:\\.\\d+)?%))?/.source;\n\n// e.g. rgb(250 20 0), rgb(100% 50% 20%), rgb(100% 50% 20% / 0.5)\nconst RE_RGB = new RegExp(\n    '^rgba?\\\\(' +\n        RE_S +\n        [INT_OR_PCT, INT_OR_PCT, INT_OR_PCT].join(SEP) +\n        ALPHA +\n        '\\\\)$'\n);\nconst RE_RGB_LEGACY = new RegExp(\n    '^rgb\\\\(' +\n        RE_S +\n        [INT_OR_PCT, INT_OR_PCT, INT_OR_PCT].join(COMMA) +\n        RE_S +\n        '\\\\)$'\n);\nconst RE_RGBA_LEGACY = new RegExp(\n    '^rgba\\\\(' +\n        RE_S +\n        [INT_OR_PCT, INT_OR_PCT, INT_OR_PCT, FLOAT_OR_PCT].join(COMMA) +\n        RE_S +\n        '\\\\)$'\n);\n\nconst RE_HSL = new RegExp(\n    '^hsla?\\\\(' + RE_S + [ANLGE, PCT, PCT].join(SEP) + ALPHA + '\\\\)$'\n);\nconst RE_HSL_LEGACY = new RegExp(\n    '^hsl?\\\\(' + RE_S + [ANLGE, PCT, PCT].join(COMMA) + RE_S + '\\\\)$'\n);\nconst RE_HSLA_LEGACY =\n    /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\nconst RE_LAB = new RegExp(\n    '^lab\\\\(' +\n        RE_S +\n        [FLOAT_OR_PCT, FLOAT_OR_PCT, FLOAT_OR_PCT].join(SEP) +\n        ALPHA +\n        '\\\\)$'\n);\nconst RE_LCH = new RegExp(\n    '^lch\\\\(' +\n        RE_S +\n        [FLOAT_OR_PCT, FLOAT_OR_PCT, ANLGE].join(SEP) +\n        ALPHA +\n        '\\\\)$'\n);\nconst RE_OKLAB = new RegExp(\n    '^oklab\\\\(' +\n        RE_S +\n        [FLOAT_OR_PCT, FLOAT_OR_PCT, FLOAT_OR_PCT].join(SEP) +\n        ALPHA +\n        '\\\\)$'\n);\nconst RE_OKLCH = new RegExp(\n    '^oklch\\\\(' +\n        RE_S +\n        [FLOAT_OR_PCT, FLOAT_OR_PCT, ANLGE].join(SEP) +\n        ALPHA +\n        '\\\\)$'\n);\n\nconst { round } = Math;\n\nconst roundRGB = (rgb) => {\n    return rgb.map((v, i) => (i <= 2 ? limit(round(v), 0, 255) : v));\n};\n\nconst percentToAbsolute = (pct, min = 0, max = 100, signed = false) => {\n    if (typeof pct === 'string' && pct.endsWith('%')) {\n        pct = parseFloat(pct.substring(0, pct.length - 1)) / 100;\n        if (signed) {\n            // signed percentages are in the range -100% to 100%\n            pct = min + (pct + 1) * 0.5 * (max - min);\n        } else {\n            pct = min + pct * (max - min);\n        }\n    }\n    return +pct;\n};\n\nconst noneToValue = (v, noneValue) => {\n    return v === 'none' ? noneValue : v;\n};\n\nconst css2rgb = (css) => {\n    css = css.toLowerCase().trim();\n\n    if (css === 'transparent') {\n        return [0, 0, 0, 0];\n    }\n\n    let m;\n\n    if (input.format.named) {\n        try {\n            return input.format.named(css);\n            // eslint-disable-next-line\n        } catch (e) {}\n    }\n\n    // rgb(250 20 0) or rgb(250,20,0)\n    if ((m = css.match(RE_RGB)) || (m = css.match(RE_RGB_LEGACY))) {\n        let rgb = m.slice(1, 4);\n        for (let i = 0; i < 3; i++) {\n            rgb[i] = +percentToAbsolute(noneToValue(rgb[i], 0), 0, 255);\n        }\n        rgb = roundRGB(rgb);\n        const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n        rgb[3] = alpha; // default alpha\n        return rgb;\n    }\n\n    // rgba(250,20,0,0.4)\n    if ((m = css.match(RE_RGBA_LEGACY))) {\n        const rgb = m.slice(1, 5);\n        for (let i = 0; i < 4; i++) {\n            rgb[i] = +percentToAbsolute(rgb[i], 0, 255);\n        }\n        return rgb;\n    }\n\n    // hsl(0,100%,50%)\n    if ((m = css.match(RE_HSL)) || (m = css.match(RE_HSL_LEGACY))) {\n        const hsl = m.slice(1, 4);\n        hsl[0] = +noneToValue(hsl[0].replace('deg', ''), 0);\n        hsl[1] = +percentToAbsolute(noneToValue(hsl[1], 0), 0, 100) * 0.01;\n        hsl[2] = +percentToAbsolute(noneToValue(hsl[2], 0), 0, 100) * 0.01;\n        const rgb = roundRGB(hsl2rgb(hsl));\n        const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n        rgb[3] = alpha;\n        return rgb;\n    }\n\n    // hsla(0,100%,50%,0.5)\n    if ((m = css.match(RE_HSLA_LEGACY))) {\n        const hsl = m.slice(1, 4);\n        hsl[1] *= 0.01;\n        hsl[2] *= 0.01;\n        const rgb = hsl2rgb(hsl);\n        for (let i = 0; i < 3; i++) {\n            rgb[i] = round(rgb[i]);\n        }\n        rgb[3] = +m[4]; // default alpha = 1\n        return rgb;\n    }\n\n    if ((m = css.match(RE_LAB))) {\n        const lab = m.slice(1, 4);\n        lab[0] = percentToAbsolute(noneToValue(lab[0], 0), 0, 100);\n        lab[1] = percentToAbsolute(noneToValue(lab[1], 0), -125, 125, true);\n        lab[2] = percentToAbsolute(noneToValue(lab[2], 0), -125, 125, true);\n        // convert to D50 Lab whitepoint\n        const wp = getLabWhitePoint();\n        setLabWhitePoint('d50');\n        const rgb = roundRGB(lab2rgb(lab));\n        // convert back to original Lab whitepoint\n        setLabWhitePoint(wp);\n        const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n        rgb[3] = alpha;\n        return rgb;\n    }\n\n    if ((m = css.match(RE_LCH))) {\n        const lch = m.slice(1, 4);\n        lch[0] = percentToAbsolute(lch[0], 0, 100);\n        lch[1] = percentToAbsolute(noneToValue(lch[1], 0), 0, 150, false);\n        lch[2] = +noneToValue(lch[2].replace('deg', ''), 0);\n        // convert to D50 Lab whitepoint\n        const wp = getLabWhitePoint();\n        setLabWhitePoint('d50');\n        const rgb = roundRGB(lch2rgb(lch));\n        // convert back to original Lab whitepoint\n        setLabWhitePoint(wp);\n        const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n        rgb[3] = alpha;\n        return rgb;\n    }\n\n    if ((m = css.match(RE_OKLAB))) {\n        const oklab = m.slice(1, 4);\n        oklab[0] = percentToAbsolute(noneToValue(oklab[0], 0), 0, 1);\n        oklab[1] = percentToAbsolute(noneToValue(oklab[1], 0), -0.4, 0.4, true);\n        oklab[2] = percentToAbsolute(noneToValue(oklab[2], 0), -0.4, 0.4, true);\n        const rgb = roundRGB(oklab2rgb(oklab));\n        const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n        rgb[3] = alpha;\n        return rgb;\n    }\n\n    if ((m = css.match(RE_OKLCH))) {\n        const oklch = m.slice(1, 4);\n        oklch[0] = percentToAbsolute(noneToValue(oklch[0], 0), 0, 1);\n        oklch[1] = percentToAbsolute(noneToValue(oklch[1], 0), 0, 0.4, false);\n        oklch[2] = +noneToValue(oklch[2].replace('deg', ''), 0);\n        const rgb = roundRGB(oklch2rgb(oklch));\n        const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n        rgb[3] = alpha;\n        return rgb;\n    }\n};\n\ncss2rgb.test = (s) => {\n    return (\n        // modern\n        RE_RGB.test(s) ||\n        RE_HSL.test(s) ||\n        RE_LAB.test(s) ||\n        RE_LCH.test(s) ||\n        RE_OKLAB.test(s) ||\n        RE_OKLCH.test(s) ||\n        // legacy\n        RE_RGB_LEGACY.test(s) ||\n        RE_RGBA_LEGACY.test(s) ||\n        RE_HSL_LEGACY.test(s) ||\n        RE_HSLA_LEGACY.test(s) ||\n        s === 'transparent'\n    );\n};\n\nexport default css2rgb;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport rgb2css from './rgb2css.js';\nimport css2rgb from './css2rgb.js';\n\nColor.prototype.css = function (mode) {\n    return rgb2css(this._rgb, mode);\n};\n\nconst css = (...args) => new Color(...args, 'css');\nchroma.css = css;\n\ninput.format.css = css2rgb;\n\ninput.autodetect.push({\n    p: 5,\n    test: (h, ...rest) => {\n        if (!rest.length && type(h) === 'string' && css2rgb.test(h)) {\n            return 'css';\n        }\n    }\n});\n\nexport { css };\n","import Color from '../../Color.js';\nimport chroma from '../../chroma.js';\nimport input from '../input.js';\nimport { unpack } from '../../utils/index.js';\n\ninput.format.gl = (...args) => {\n    const rgb = unpack(args, 'rgba');\n    rgb[0] *= 255;\n    rgb[1] *= 255;\n    rgb[2] *= 255;\n    return rgb;\n};\n\nconst gl = (...args) => new Color(...args, 'gl');\nchroma.gl = gl;\n\nColor.prototype.gl = function () {\n    const rgb = this._rgb;\n    return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n};\n\nexport { gl };\n","import Color from '../../Color.js';\nimport chroma from '../../chroma.js';\nimport { type } from '../../utils/index.js';\nimport input from '../input.js';\nimport hex2rgb from './hex2rgb.js';\nimport rgb2hex from './rgb2hex.js';\n\nColor.prototype.hex = function (mode) {\n    return rgb2hex(this._rgb, mode);\n};\n\nconst hex = (...args) => new Color(...args, 'hex');\nchroma.hex = hex;\n\ninput.format.hex = hex2rgb;\ninput.autodetect.push({\n    p: 4,\n    test: (h, ...rest) => {\n        if (\n            !rest.length &&\n            type(h) === 'string' &&\n            [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0\n        ) {\n            return 'hex';\n        }\n    }\n});\n\nexport { hex };\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\nconst { log } = Math;\n\nconst temperature2rgb = (kelvin) => {\n    const temp = kelvin / 100;\n    let r, g, b;\n    if (temp < 66) {\n        r = 255;\n        g =\n            temp < 6\n                ? 0\n                : -155.25485562709179 -\n                  0.44596950469579133 * (g = temp - 2) +\n                  104.49216199393888 * log(g);\n        b =\n            temp < 20\n                ? 0\n                : -254.76935184120902 +\n                  0.8274096064007395 * (b = temp - 10) +\n                  115.67994401066147 * log(b);\n    } else {\n        r =\n            351.97690566805693 +\n            0.114206453784165 * (r = temp - 55) -\n            40.25366309332127 * log(r);\n        g =\n            325.4494125711974 +\n            0.07943456536662342 * (g = temp - 50) -\n            28.0852963507957 * log(g);\n        b = 255;\n    }\n    return [r, g, b, 1];\n};\n\nexport default temperature2rgb;\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\nimport temperature2rgb from './temperature2rgb.js';\nimport { unpack } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2temperature = (...args) => {\n    const rgb = unpack(args, 'rgb');\n    const r = rgb[0],\n        b = rgb[2];\n    let minTemp = 1000;\n    let maxTemp = 40000;\n    const eps = 0.4;\n    let temp;\n    while (maxTemp - minTemp > eps) {\n        temp = (maxTemp + minTemp) * 0.5;\n        const rgb = temperature2rgb(temp);\n        if (rgb[2] / rgb[0] >= b / r) {\n            maxTemp = temp;\n        } else {\n            minTemp = temp;\n        }\n    }\n    return round(temp);\n};\n\nexport default rgb2temperature;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport temperature2rgb from './temperature2rgb.js';\nimport rgb2temperature from './rgb2temperature.js';\n\nColor.prototype.temp =\n    Color.prototype.kelvin =\n    Color.prototype.temperature =\n        function () {\n            return rgb2temperature(this._rgb);\n        };\n\nconst temp = (...args) => new Color(...args, 'temp');\nObject.assign(chroma, { temp, kelvin: temp, temperature: temp });\n\ninput.format.temp =\n    input.format.kelvin =\n    input.format.temperature =\n        temperature2rgb;\n\nexport { temp, temp as kelvin, temp as temperature };\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklch2rgb from './oklch2rgb.js';\nimport rgb2oklch from './rgb2oklch.js';\n\nColor.prototype.oklch = function () {\n    return rgb2oklch(this._rgb);\n};\n\nconst oklch = (...args) => new Color(...args, 'oklch');\nObject.assign(chroma, { oklch });\n\ninput.format.oklch = oklch2rgb;\n\ninput.autodetect.push({\n    p: 2,\n    test: (...args) => {\n        args = unpack(args, 'oklch');\n        if (type(args) === 'array' && args.length === 3) {\n            return 'oklch';\n        }\n    }\n});\n\nexport { oklch };\n","// feel free to comment out anything to rollup\n// a smaller chroma.js bundle\nimport chroma from './src/chroma.js';\n\n// io --> convert colors\nimport './src/io/named/index.js';\n\n// operators --> modify existing Colors\nimport './src/ops/alpha.js';\nimport './src/ops/clipped.js';\nimport './src/ops/darken.js';\nimport './src/ops/get.js';\nimport './src/ops/luminance.js';\nimport './src/ops/mix.js';\nimport './src/ops/premultiply.js';\nimport './src/ops/saturate.js';\nimport './src/ops/set.js';\nimport './src/ops/shade.js';\n\n// interpolators\nimport './src/interpolator/rgb.js';\nimport './src/interpolator/lrgb.js';\nimport './src/interpolator/lab.js';\nimport './src/interpolator/lch.js';\nimport './src/interpolator/num.js';\nimport './src/interpolator/hcg.js';\nimport './src/interpolator/hsi.js';\nimport './src/interpolator/hsl.js';\nimport './src/interpolator/hsv.js';\nimport './src/interpolator/oklab.js';\nimport './src/interpolator/oklch.js';\n\n// generators -- > create new colors\nimport average from './src/generator/average.js';\nimport bezier from './src/generator/bezier.js';\nimport blend from './src/generator/blend.js';\nimport cubehelix from './src/generator/cubehelix.js';\nimport mix from './src/generator/mix.js';\nimport random from './src/generator/random.js';\nimport scale from './src/generator/scale.js';\n\n// other utility methods\nimport { analyze } from './src/utils/analyze.js';\nimport contrast from './src/utils/contrast.js';\nimport contrastAPCA from './src/utils/contrastAPCA.js';\nimport deltaE from './src/utils/delta-e.js';\nimport distance from './src/utils/distance.js';\nimport { limits } from './src/utils/analyze.js';\nimport valid from './src/utils/valid.js';\nimport input from './src/io/input.js';\n\n// scale\nimport scales from './src/utils/scales.js';\n\n// colors\nimport colors from './src/colors/w3cx11.js';\nimport brewer from './src/colors/colorbrewer.js';\nimport Color from './src/Color.js';\n\nObject.assign(chroma, {\n    analyze,\n    average,\n    bezier,\n    blend,\n    brewer,\n    Color,\n    colors,\n    contrast,\n    contrastAPCA,\n    cubehelix,\n    deltaE,\n    distance,\n    input,\n    interpolate: mix,\n    limits,\n    mix,\n    random,\n    scale,\n    scales,\n    valid\n});\n\nexport default chroma;\n\nexport {\n    analyze,\n    average,\n    bezier,\n    blend,\n    brewer,\n    Color,\n    colors,\n    contrast,\n    contrastAPCA,\n    cubehelix,\n    deltaE,\n    distance,\n    input,\n    limits,\n    mix,\n    mix as interpolate,\n    random,\n    scale,\n    scales,\n    valid\n};\n\nexport * from './src/io/cmyk/index.js';\nexport * from './src/io/css/index.js';\nexport * from './src/io/gl/index.js';\nexport * from './src/io/hcg/index.js';\nexport * from './src/io/hex/index.js';\nexport * from './src/io/hsi/index.js';\nexport * from './src/io/hsl/index.js';\nexport * from './src/io/hsv/index.js';\nexport * from './src/io/lab/index.js';\nexport * from './src/io/lch/index.js';\nexport * from './src/io/num/index.js';\nexport * from './src/io/rgb/index.js';\nexport * from './src/io/temp/index.js';\nexport * from './src/io/oklab/index.js';\nexport * from './src/io/oklch/index.js';\n","import chroma from 'chroma-js';\nimport { xMinMaxValues, xyFilterX } from 'ml-spectra-processing';\n/**\n * Retrieve a chart with autocorrelation color\n * @param spectraProcessor - SpectraProcessor instance\n * @param index - Index in the spectrum\n * @param options - Chart options\n * @returns Color spectrum chart object\n */\nexport function getAutocorrelationChart(spectraProcessor, index, options = {}) {\n    const { autocorrelation = spectraProcessor.getAutocorrelation(index, options), xFilter, ids, } = options;\n    const { min, max } = xMinMaxValues(autocorrelation.y);\n    // eslint-disable-next-line import/no-named-as-default-member\n    const colorCallback = chroma\n        .scale(['blue', 'cyan', 'yellow', 'red'])\n        .domain([min, max])\n        .mode('lch');\n    // Annoying but it seems the color library does not handle TypedArray well\n    const ys = ArrayBuffer.isView(autocorrelation.y)\n        ? Array.from(autocorrelation.y)\n        : autocorrelation.y;\n    const colorScale = ys.map((y) => `rgb(${colorCallback(y).rgb().join(',')})`);\n    let mean = spectraProcessor.getMeanData({ ids });\n    if (xFilter) {\n        mean = xyFilterX({ x: mean.x, y: mean.y }, xFilter);\n    }\n    const colorSpectrum = {\n        type: 'color',\n        x: mean.x,\n        y: mean.y,\n        color: colorScale,\n        styles: {\n            unselected: {\n                lineWidth: 1,\n                lineStyle: 1,\n            },\n            selected: {\n                lineWidth: 3,\n                lineStyle: 1,\n            },\n        },\n    };\n    return colorSpectrum;\n}\n//# sourceMappingURL=getAutocorrelationChart.js.map","import { matrixBoxPlot } from 'ml-spectra-processing';\nexport function getBoxPlotData(normalizedData) {\n    return {\n        x: normalizedData.x,\n        ...matrixBoxPlot(normalizedData.matrix),\n    };\n}\n//# sourceMappingURL=getBoxPlotData.js.map","import chroma from 'chroma-js';\nimport { Matrix } from 'ml-matrix';\nimport { xMinMaxValues } from 'ml-spectra-processing';\nimport { getBoxPlotData } from '../spectra/getBoxPlotData.js';\n/**\n * Get box plot chart from normalized data\n * @param normalizedData - Normalized data with x and matrix\n * @param options - Chart styling options\n * @returns Color spectrum chart object\n */\nexport function getBoxPlotChart(normalizedData, options = {}) {\n    const { q13FillColor = '#000', q13FillOpacity = 0.3, medianStrokeColor = '', medianStrokeWidth = 3, minMaxFillColor = '#000', minMaxFillOpacity = 0.15, } = options;\n    const annotations = [];\n    const boxPlotData = getBoxPlotData(normalizedData);\n    if (q13FillOpacity && q13FillColor) {\n        const q13 = [];\n        for (let i = 0; i < boxPlotData.x.length; i++) {\n            q13.push({\n                x: boxPlotData.x[i],\n                y: boxPlotData.q1[i],\n            });\n        }\n        for (let i = boxPlotData.x.length - 1; i >= 0; i--) {\n            q13.push({\n                x: boxPlotData.x[i],\n                y: boxPlotData.q3[i],\n            });\n        }\n        annotations.push({\n            type: 'polygon',\n            layer: 0,\n            properties: {\n                fillColor: q13FillColor,\n                fillOpacity: q13FillOpacity,\n                strokeWidth: 0.0000001,\n                position: q13,\n            },\n        });\n    }\n    if (minMaxFillColor && minMaxFillOpacity) {\n        const minMax = [];\n        for (let i = 0; i < boxPlotData.x.length; i++) {\n            minMax.push({\n                x: boxPlotData.x[i],\n                y: boxPlotData.min[i],\n            });\n        }\n        for (let i = boxPlotData.x.length - 1; i >= 0; i--) {\n            minMax.push({\n                x: boxPlotData.x[i],\n                y: boxPlotData.max[i],\n            });\n        }\n        annotations.push({\n            type: 'polygon',\n            layer: 0,\n            properties: {\n                fillColor: minMaxFillColor,\n                fillOpacity: minMaxFillOpacity,\n                strokeWidth: 0.0000001,\n                strokeColor: '#FFF',\n                position: minMax,\n            },\n        });\n    }\n    const colorSpectrum = {\n        type: 'color',\n        data: {\n            x: boxPlotData.x,\n            y: boxPlotData.median,\n            color: medianStrokeColor\n                ? new Array(boxPlotData.x.length).fill(medianStrokeColor)\n                : getColors(normalizedData.matrix),\n        },\n        styles: {\n            unselected: {\n                lineWidth: medianStrokeWidth,\n                lineStyle: 1,\n            },\n            selected: {\n                lineWidth: medianStrokeWidth,\n                lineStyle: 1,\n            },\n        },\n        annotations,\n    };\n    return colorSpectrum;\n}\nfunction getColors(dataset) {\n    const matrix = new Matrix(dataset);\n    const stdevs = matrix.standardDeviation('column');\n    const { min, max } = xMinMaxValues(stdevs);\n    // eslint-disable-next-line import/no-named-as-default-member\n    const colorCallback = chroma\n        .scale(['blue', 'cyan', 'yellow', 'red'])\n        .domain([min, max])\n        .mode('lch');\n    const colors = stdevs.map((y) => `rgb(${colorCallback(y).rgb().join(',')})`);\n    return colors;\n}\n//# sourceMappingURL=getBoxPlotChart.js.map","/**\n * Add chart data styling based on spectrum metadata\n * @param data - Data object to style\n * @param spectrum - Spectrum with metadata\n */\nexport function addChartDataStyle(data, spectrum) {\n    data.styles = {\n        unselected: {\n            lineColor: spectrum.meta.color || 'darkgrey',\n            lineWidth: 1,\n            lineStyle: 1,\n        },\n        selected: {\n            lineColor: spectrum.meta.color || 'darkgrey',\n            lineWidth: 3,\n            lineStyle: 1,\n        },\n    };\n    data.label = spectrum.meta.id || String(spectrum.id);\n}\n//# sourceMappingURL=addChartDataStyle.js.map","import { addChartDataStyle } from './addChartDataStyle.js';\n/**\n * Retrieve a chart with selected original data\n * @param spectra - Array of spectrum objects\n * @param options - Chart options\n * @returns Chart object with data\n */\nexport function getChart(spectra, options = {}) {\n    const { ids, yFactor, xFilter = {} } = options;\n    const chart = {\n        data: [],\n    };\n    for (const spectrum of spectra) {\n        if (!ids || ids.includes(spectrum.id)) {\n            const data = spectrum.getData({ yFactor, xFilter });\n            addChartDataStyle(data, spectrum);\n            chart.data.push(data);\n        }\n    }\n    return chart;\n}\n//# sourceMappingURL=getChart.js.map","/**\n * Get normalization annotations for a filter\n * @param filter - Normalization filter with from, to, and exclusions\n * @returns Array of rectangle annotations\n */\nexport function getNormalizationAnnotations(filter = {}) {\n    let { exclusions = [] } = filter;\n    let annotations = [];\n    exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n    annotations = exclusions.map((exclusion) => {\n        const annotation = {\n            type: 'rect',\n            position: [\n                { x: exclusion.from, y: '0px' },\n                { x: exclusion.to, y: '2000px' },\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: '0px' },\n                { x: filter.from, y: '2000px' },\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: '0px' },\n                { x: Number.MAX_SAFE_INTEGER, y: '2000px' },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    return annotations;\n}\n//# sourceMappingURL=getNormalizationAnnotations.js.map","import { xyFilterX } from 'ml-spectra-processing';\nimport { addChartDataStyle } from './addChartDataStyle.js';\n/**\n * Get chart with normalized data\n * @param spectra - Array of spectrum objects\n * @param options - Chart options\n * @returns Chart object with normalized data\n */\nexport function getNormalizedChart(spectra, options = {}) {\n    const { xFilter } = options;\n    const chart = {\n        data: [],\n    };\n    for (const spectrum of spectra) {\n        let data = spectrum.normalized;\n        if (xFilter) {\n            data = xyFilterX(data, xFilter);\n        }\n        addChartDataStyle(data, spectrum);\n        chart.data.push(data);\n    }\n    return chart;\n}\n//# sourceMappingURL=getNormalizedChart.js.map","import { addChartDataStyle } from './addChartDataStyle.js';\n/**\n * Get chart with post-processed data\n * @param spectraProcessor - SpectraProcessor instance\n * @param options - Post-processing options\n * @returns Chart object with post-processed data\n */\nexport function getPostProcessedChart(spectraProcessor, options = {}) {\n    const scaled = spectraProcessor.getPostProcessedData(options);\n    const chart = {\n        data: [],\n    };\n    if (!scaled?.matrix || !scaled.x || !scaled.meta || !scaled.ids)\n        return chart;\n    for (let i = 0; i < scaled.matrix.length; i++) {\n        const data = {\n            x: scaled.x,\n            y: Array.from(scaled.matrix[i]), // need to ensure not a typed array\n        };\n        addChartDataStyle(data, { meta: scaled.meta[i], id: scaled.ids[i] });\n        chart.data.push(data);\n    }\n    return chart;\n}\n//# sourceMappingURL=getPostProcessedChart.js.map","/**\n * Get normalized data from spectra\n * @param spectra - Array of spectrum objects\n * @param options - Options for filtering spectra\n * @returns Normalized data with ids, matrix, meta, and x values\n */\nexport function getNormalizedData(spectra, options = {}) {\n    const { ids } = options;\n    const matrix = [];\n    const meta = [];\n    const currentIDs = [];\n    let x = [];\n    if (Array.isArray(spectra) && spectra.length > 0) {\n        for (const spectrum of spectra) {\n            if (!ids || ids.includes(spectrum.id)) {\n                currentIDs.push(spectrum.id);\n                matrix.push(spectrum.normalized.y);\n                meta.push(spectrum.meta);\n            }\n        }\n        x = spectra[0].normalized.x;\n    }\n    return { ids: currentIDs, matrix, meta, x };\n}\n//# sourceMappingURL=getNormalizedData.js.map","import { getNormalizedData } from '../spectra/getNormalizedData.js';\n/**\n * Get track annotation for a specific index\n * @param spectra - Array of spectrum objects\n * @param index - Index in the spectrum\n * @param options - Annotation options\n * @returns Array of line annotations\n */\nexport function getTrackAnnotation(spectra, index, options = {}) {\n    const { ids, showSpectrumID = true, sortY = true, limit = 20 } = options;\n    const annotations = [];\n    const normalized = getNormalizedData(spectra, { ids });\n    if (normalized.ids.length === 0)\n        return annotations;\n    let line = 0;\n    // Header containing X coordinate\n    annotations.push({\n        type: 'line',\n        position: [\n            { x: `70px`, y: `${15 + 15 * line}px` },\n            { x: `85px`, y: `${15 + 15 * line}px` },\n        ],\n        strokeWidth: 0.0000001,\n        label: {\n            size: 16,\n            text: `x: ${normalized.x[index].toPrecision(6)}`,\n            position: { x: `130px`, y: `${20 + 15 * line}px` },\n        },\n    });\n    line++;\n    let peaks = [];\n    for (let i = 0; i < normalized.ids.length; i++) {\n        peaks.push({\n            id: normalized.ids[i],\n            meta: normalized.meta[i],\n            y: normalized.matrix[i][index],\n        });\n    }\n    if (sortY) {\n        peaks.sort((a, b) => b.y - a.y);\n    }\n    if (limit) {\n        peaks = peaks.slice(0, limit);\n    }\n    for (const { id, meta, y } of peaks) {\n        annotations.push({\n            type: 'line',\n            position: [\n                { x: `70px`, y: `${15 + 15 * line}px` },\n                { x: `85px`, y: `${15 + 15 * line}px` },\n            ],\n            strokeColor: meta.color,\n            strokeWidth: 2,\n            label: {\n                text: `${y.toPrecision(4)}${showSpectrumID ? ` - ${id}` : ''}`,\n                position: { x: `90px`, y: `${20 + 15 * line}px` },\n            },\n        });\n        line++;\n    }\n    return annotations;\n}\n//# sourceMappingURL=getTrackAnnotation.js.map","/**\n * Get statistics about categories in metadata\n * @param metadata - Array of metadata objects\n * @param options - Options for categorization\n * @returns Object with category statistics\n */\nexport function getCategoriesStats(metadata, options = {}) {\n    const { propertyName = 'category' } = options;\n    const categories = {};\n    let classNumber = 0;\n    for (const metadatum of metadata) {\n        const value = metadatum[propertyName];\n        if (!categories[value]) {\n            categories[value] = {\n                classNumber: classNumber++,\n                counter: 0,\n            };\n        }\n        categories[value].counter++;\n    }\n    return categories;\n}\n//# sourceMappingURL=getCategoriesStats.js.map","/**\n * Get class labels for each metadata entry\n * @param metadata - Array of metadata objects\n * @param options - Options for label extraction\n * @returns Array of class labels\n */\nexport function getClassLabels(metadata, options = {}) {\n    const { propertyName = 'category' } = options;\n    const categories = [];\n    for (const metadatum of metadata) {\n        categories.push(metadatum[propertyName]);\n    }\n    return categories;\n}\n//# sourceMappingURL=getClassLabels.js.map","import { getCategoriesStats } from './getCategoriesStats.js';\n/**\n * Get class numbers for each metadata entry\n * @param metadata - Array of metadata objects\n * @param options - Options for classification\n * @returns Array of class numbers\n */\nexport function getClasses(metadata, options = {}) {\n    const { propertyName = 'category' } = options;\n    const categoriesStats = getCategoriesStats(metadata, options);\n    const result = new Array(metadata.length);\n    for (let i = 0; i < metadata.length; i++) {\n        result[i] = categoriesStats[metadata[i][propertyName]].classNumber;\n    }\n    return result;\n}\n//# sourceMappingURL=getClasses.js.map","/**\n * Get metadata from spectra\n * @param spectra - Array of spectrum objects\n * @param options - Options for filtering spectra\n * @returns Array of metadata objects\n */\nexport function getMetadata(spectra, options = {}) {\n    const { ids } = options;\n    const metadata = [];\n    if (Array.isArray(spectra) && spectra.length > 0) {\n        for (const spectrum of spectra) {\n            if (!ids || ids.includes(spectrum.id)) {\n                metadata.push(spectrum.meta);\n            }\n        }\n    }\n    return metadata;\n}\n//# sourceMappingURL=getMetadata.js.map","/*\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","export function parseString(value) {\n    if (value.length === 4 || value.length === 5) {\n        const lowercase = value.toLowerCase();\n        if (lowercase === 'true')\n            return true;\n        if (lowercase === 'false')\n            return false;\n    }\n    const number = Number(value);\n    if (number === 0 && !value.includes('0')) {\n        return value;\n    }\n    if (!Number.isNaN(number))\n        return number;\n    return value;\n}\n//# sourceMappingURL=parseString.js.map","export const gyromagneticRatioMHzT = {\n    '1H': 42.577478615342585,\n    '2H': 6.5359028540009305,\n    '3H': 45.41483815473964,\n    '3He': -32.43604456417949,\n    '6Li': 6.266099405837534,\n    '7Li': 16.548177299618295,\n    '9Be': -5.983379963834242,\n    '10B': 4.57473388220653,\n    '11B': 13.66160796005943,\n    '13C': 10.707746367473973,\n    '14N': 3.076272817251739,\n    '15N': -4.3152552187859134,\n    '17O': -5.7734832203316975,\n    '19F': 40.06924371705693,\n    '21Ne': -3.362579959801532,\n    '22Na': 4.436349259342206,\n    '23Na': 11.268733657034753,\n    '25Mg': -2.607933066661972,\n    '26Al': 4.273225764239245,\n    '27Al': 11.100630067688776,\n    '29Si': -8.461871234008282,\n    '31P': 17.241162495263175,\n    '33S': 3.2688220630834754,\n    '35Cl': 4.175656570906633,\n    '36Cl': 4.897135020041924,\n    '37Cl': 3.4759025124743057,\n    '39Ar': -3.462835209795831,\n    '39K': 1.9893443809332112,\n    '40K': -2.4734743333970806,\n    '41K': 1.091921234883595,\n    '41Ca': -3.4724832349401047,\n    '43Ca': -2.8689916395725414,\n    '45Sc': 10.353659488911559,\n    '47Hi': -2.403068251036403,\n    '49Hi': -2.403730327705445,\n    '50V': 4.248579379465121,\n    '51V': 11.208261084083814,\n    '53Cr': -2.4103147963328766,\n    '53Mn': 10.961289063460638,\n    '55Mn': 10.570707386401027,\n    '57Fe': 1.3818237005731187,\n    '59Co': 10.050933643526891,\n    '60Co': 5.7916463354780205,\n    '61Ni': -3.809518009468367,\n    '63Ni': 7.561612483277437,\n    '63Cu': 11.311420179117773,\n    '65Cu': 12.116874196993763,\n    '67Zn': 2.6674502745948656,\n    '69Ga': 10.23978520568125,\n    '71Ga': 13.010902748192017,\n    '73Ge': -1.4876591727852992,\n    '75As': 7.3090505609529135,\n    '77Se': 8.134221686648205,\n    '79Se': -2.21708568778123,\n    '79Br': 10.695006473323717,\n    '81Br': 11.528409999706447,\n    '81Kr': -1.9753405882294455,\n    '83Kr': -1.6443288722876133,\n    '85Kr': -1.703226109304539,\n    '85Rb': 4.125530397832004,\n    '87Rb': 13.981309683545954,\n    '87Sr': -1.851714225407608,\n    '89Y': -2.0931336103407774,\n    '91Zr': -3.970456361178983,\n    '91Nb': 11.032433266932335,\n    '92Nb': 5.58627189504799,\n    '93Nb': 10.439564904668199,\n    '95Mo': -2.784380854729418,\n    '97Mo': -2.842922370728985,\n    '97Hc': 9.858553909649345,\n    '99Hc': 9.618018745530753,\n    '99Ru': -1.9544329039438861,\n    '101Ru': -2.1892087754004836,\n    '103Rh': -1.3459975123963002,\n    '105Pd': -1.9574819412355304,\n    '107Ag': -1.730633566737207,\n    '109Ag': 1.9896492846623755,\n    '111Cd': -9.05564075618306,\n    '113Cd': -9.471834346492482,\n    '113In': 9.351736155393834,\n    '115In': 9.371724288750167,\n    '115Sn': -13.985934056771613,\n    '117Sn': -15.237563864991529,\n    '119Sn': -15.944940516652968,\n    '121Sn': 3.541456814244654,\n    '121Sb': 10.238667225340981,\n    '123Sb': 5.544238738098897,\n    '125Sb': 5.727834340731468,\n    '123He': -11.217408195958745,\n    '125He': -13.522480388441707,\n    '127I': 8.563831041040862,\n    '129I': 5.6984329097048985,\n    '129Xe': -11.860160502223787,\n    '131Xe': 3.5157686750625525,\n    '133Cs': 5.614148807428737,\n    '134Cs': 5.69655448494487,\n    '135Cs': 5.941920316280481,\n    '137Cs': 6.179527436650749,\n    '133Ba': 11.767759427100511,\n    '135Ba': 4.258996923544905,\n    '137Ba': 4.7641207681939495,\n    '137La': 5.871574670194692,\n    '138La': 5.653524946166542,\n    '139La': 6.052556812291568,\n    '141Pr': 13.00719308615385,\n    '143Nd': -2.319446225429283,\n    '145Nd': -1.4286917595132482,\n    '145Pm': 11.586341708247685,\n    '147Pm': 5.618940151744178,\n    '147Sm': -1.7619079778143567,\n    '149Sm': -1.454172999736274,\n    '151Sm': -1.099177943637708,\n    '150Eu': 4.119249381011216,\n    '151Eu': 10.560340659609437,\n    '152Eu': -4.917588978540037,\n    '153Eu': 4.66319763384053,\n    '154Eu': -5.081728819406879,\n    '155Eu': 4.622340534132499,\n    '155Gd': -1.3166759371083225,\n    '157Gd': -1.7267714528344573,\n    '157Hb': 10.315909503395963,\n    '158Hb': 4.4541353102101295,\n    '159Hb': 10.209193198188421,\n    '161Hy': -1.4604888626975372,\n    '163Hy': 2.04590402269321,\n    '163Ho': 9.190669550527298,\n    '165Ho': 9.059996523742551,\n    '166Ho': 3.941969641339908,\n    '167Er': -1.2246240493510665,\n    '169Hm': -3.5216380718489675,\n    '171Hm': -3.506392885390747,\n    '171Yb': 7.505205293382021,\n    '173Yb': -2.067247283734719,\n    '173Lu': 4.950329831362216,\n    '174Lu': 15.107979780096652,\n    '175Lu': 4.847315928580239,\n    '176Lu': 3.4410563719983727,\n    '177Hf': 1.7227060697789323,\n    '179Hf': -1.0822388475730185,\n    '179Ha': 4.978642320498912,\n    '180Ha': 4.077240422770786,\n    '181Ha': 5.15069513909883,\n    '183W': 1.7896324383305209,\n    '185Re': 9.683742438261751,\n    '187Re': 9.784360668886006,\n    '187Os': 0.9820949116385737,\n    '189Os': 3.3417448716419638,\n    '191Ir': 0.7632756686749131,\n    '193Ir': 0.8283217975633214,\n    '193Pt': 9.162357061390605,\n    '195Pt': 9.258401736077394,\n    '197Au': 0.7378670245778789,\n    '199Hg': 7.68204945629738,\n    '201Hg': -2.8356046812290385,\n    '203Hl': 24.63622131648455,\n    '204Hl': 0.3430166953099643,\n    '205Hl': 24.88014429981608,\n    '205Pb': 2.162987054692344,\n    '207Pb': 9.00380712222511,\n    '207Bi': 6.899124436187426,\n    '208Bi': 6.970099248698476,\n    '209Bi': 6.931478109670983,\n    '209Po': 10.366726791590036,\n    '227Ac': 6.1997091596763925,\n    '229Hh': 1.402557154156299,\n    '231Pa': 10.11264035061969,\n    '233U': -1.7989320020700355,\n    '235U': -0.827595836303406,\n    '237Np': 9.634957841595446,\n    '239Pu': 3.079527664560569,\n    '241Pu': -2.067247283734719,\n    '241Am': 4.878459666630606,\n    '243Am': 4.634536683299075,\n    '243Cm': 1.2196149166576515,\n    '245Cm': 1.0889418898729026,\n    '247Cm': 0.6098074583288254,\n};\n//# sourceMappingURL=gyromagneticRatioMHzT.js.map","import { gyromagneticRatio } from '.';\n/**\n * Attempts to resolve a nucleus string to a canonical gyromagnetic nucleus symbol.\n * @param nucleus - The name or symbol of the nucleus (e.g., '1H', 'proton').\n * @returns The canonical nucleus symbol if found, otherwise null.\n */\nexport function getGyromagneticNucleus(nucleus) {\n    nucleus = nucleus.toLowerCase();\n    if (nucleus === 'proton')\n        return '1H';\n    for (const key in gyromagneticRatio) {\n        if (key.toLowerCase() === nucleus)\n            return key;\n    }\n    if (nucleus in gyromagneticRatio) {\n        return nucleus;\n    }\n    // we try to use only the numbers\n    const nucleusNumber = nucleus.replaceAll(/[^0-9]/g, '');\n    if (!nucleusNumber)\n        return null;\n    const filteredNuclei = [];\n    for (const key in gyromagneticRatio) {\n        if (key.replaceAll(/[^0-9]/g, '') === nucleusNumber) {\n            filteredNuclei.push(key);\n        }\n    }\n    if (filteredNuclei.length === 1) {\n        return filteredNuclei[0];\n    }\n    return null;\n}\n//# sourceMappingURL=getGyromagneticNucleus.js.map","import { getGyromagneticNucleus, gyromagneticRatio } from '.';\n/**\n * Returns the gyromagnetic ratio for a given nucleus string.\n * @param nucleus - The name or symbol of the nucleus (e.g., '1H', 'proton').\n * @returns The gyromagnetic ratio for the nucleus, or null if not found.\n */\nexport function getGyromagneticRatio(nucleus) {\n    const realNucleus = getGyromagneticNucleus(nucleus);\n    if (realNucleus) {\n        return gyromagneticRatio[realNucleus];\n    }\n    return null;\n}\n//# sourceMappingURL=getGyromagneticRatio.js.map","import { gyromagneticRatioMHzT } from './gyromagneticRatioMHzT';\nexport const gyromagneticRatio = Object.fromEntries(Object.entries(gyromagneticRatioMHzT).map(([key, value]) => [\n    key,\n    value * 2 * Math.PI * 1e6,\n]));\nexport * from './gyromagneticRatioMHzT';\nexport * from './getGyromagneticNucleus';\nexport * from './getGyromagneticRatio';\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\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{ensureString as me}from\"ensure-string\";var $=/\\s*\\$\\$.*/;function E(e,m=/\\r\\n/.exec(e)?`\\r\n`:`\n`){return e.split(m).map(o=>o.replace($,\"\")).filter(Boolean).join(m).trim()}function Le(e,m={}){e=me(e);let{flatten:t=!1}=m,o=e.split(/\\r?\\n/),l=[],i=[],n=[],f={title:\"\",jcamp:\"\",children:[]},s=0,u=e.includes(\"## \");for(let c=0;c<o.length;c++){let b=o[c],p=u?b.replaceAll(\" \",\"\"):b;if(p.startsWith(\"##NTUPLES\")&&s++,p.startsWith(\"##TITLE\")){let r=[p.slice(8).trim()];for(let a=c+1;a<o.length&&!o[a].startsWith(\"##\");a++)r.push(o[a].trim());i.push({title:r.join(`\n`),jcamp:`${b}\n`,children:[]}),f=i.at(-1),l.push(f)}else if(p.startsWith(\"##END\")&&s===0&&f){f.jcamp+=`${b}\n`;let r=i.pop();if(!r)throw new Error(\"Not finished\");i.length>0?(f=i.at(-1),f.children?.push(r)):(f=void 0,n.push(r))}else if(f?.jcamp){f.jcamp+=`${b}\n`;let r=p.match(/^##(.*?)=(.+)/);if(r){let a=r[1].replaceAll(/[ _-]/g,\"\").toUpperCase();a===\"DATATYPE\"?f.dataType=r[2].trim():a===\"DATACLASS\"?f.dataClass=r[2].trim():a===\"JCAMPDX\"?f.jcampDX=E(r[2].trim()):a===\"JCAMPCS\"&&(f.jcampCS=E(r[2].trim()))}}p.startsWith(\"##END\")&&s>0&&s--}if(t){for(let c of l)c.children=void 0;return l}else return n}import{parseString as be}from\"dynamic-typing\";import{ensureString as ge}from\"ensure-string\";var te=[\"TIC\",\".RIC\",\"SCANNUMBER\"];function ne(e){let m=e.spectra,t=m.length,o={times:new Array(t),series:{ms:{dimension:2,data:new Array(t)}}},l=[];for(let i of te){let n=k(i);m[0][n]&&(l.push(n),o.series[n]={dimension:1,data:new Array(t)})}for(let i=0;i<t;i++){let n=m[i];o.times[i]=n.pageValue;for(let f of l)o.series[f].data[i]=Number(n[f]);n.data&&(o.series.ms.data[i]=[n.data.x,n.data.y])}e.chromatogram=o}function re(e){return te.includes(e)}function k(e){return e.toLowerCase().replaceAll(/[^a-z0-9]/g,\"\")}function O(e){return e.map(Number)}function V(e,m,t){let{logger:o}=t;o&&(e.xFactor||o.info(\"The xFactor is not defined, it will be set to 1\"),e.yFactor||o.info(\"The yFactor is not defined, it will be set to 1\"));let l=e.yFactor??1,i=e.xFactor??1,n=e.deltaX??1,f=Math.abs(n*.1),s=.01;e.isXYdata=!0;let u={x:[],y:[]};e.data=u;let c=e.firstX||0,b=e.firstY||0,p=!1,r,a=0;for(;a<m.length;a++)if(r=m.codePointAt(a),r===13||r===10)p=!0;else if(p)break;let d=0,g=!0,A=!1,x=!1,I=0,S=!1,C=!1,h=0,X=0,L=!1,N=!1,Y=!1,F=0;for(;a<=m.length;a++)if(a===m.length?r=13:r=m.codePointAt(a),C)(r===13||r===10)&&(g=!0,C=!1,d++);else if(r<=57&&r>=48)N=!0,F>0?h+=(r-48)/10**F++:(h*=10,h+=r-48);else if(r===44||r===46)N=!0,F++;else{if(N){if(L&&(h=h*-1,L=!1),g)h*=i,o&&(x?Math.abs(c-n-h)>f&&(Math.abs(c-h)<f?o.trace(`Data line ${d}: After a DIFFERENCE the next line should repeat the last value and this does not seem to be the case: Current value: ${h} - Expected: ${c}.`):Math.abs(c-n-h)>10*f?o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${c} based on increment after a DIFFERENCE is too high`):o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${c} based on increment after a DIFFERENCE is too high`)):Math.abs(c-h)>f&&o.trace(`Data line ${d}: The difference between the first value ${h} and the first x value ${c} is too high`)),g=!1,x&&(Y=!0);else if(Y)Y=!1,o&&Math.abs(b-h)>s&&o.trace(`Data line ${d}: After a duplicate the next line should repeat the same value ${h} !== ${b}`),b=h;else{A?(I=L?0-h:h,x=!0,A=!1):S||(X=L?0-h:h);let y=S?h-1:1;for(let M=0;M<y;M++)x?b+=I:b=X,u.x.push(c),u.y.push(b*l),c+=n}L=!1,h=0,F=0,N=!1,S=!1}if(r<74&&r>63)N=!0,x=!1,h=r-64;else if(r>96&&r<106)N=!0,x=!1,h=r-96,L=!0;else if(r===115)N=!0,S=!0,h=9;else if(r>82&&r<91)N=!0,S=!0,h=r-82;else if(r>73&&r<83)N=!0,A=!0,h=r-73;else if(r>105&&r<115)N=!0,A=!0,h=r-105,L=!0;else if(r===36&&m.codePointAt(a+1)===36)N=!0,C=!0;else if(r===37)N=!0,A=!0,h=0,L=!1;else if(r===45){let y=m.codePointAt(a+1);(y!==void 0&&y>=48&&y<=57||y===44||y===46)&&(N=!0,g||(x=!1),L=!0)}else(r===13||r===10)&&(g=!0,C=!1,d++)}o&&x&&o.warn(\"The last value is a difference, it should be repeated on the next line\")}var oe=/[,\\t ]+/;function w(e,m,t){if(e.isPeaktable=!0,!e.variables||Object.keys(e.variables).length===2?ce(e,m,t):ue(e,m,t),e.variables)for(let o in e.variables)e.variables[o].data=e.data?.[o]}function ce(e,m,t){let{logger:o}=t,l={x:[],y:[]};e.data=l;let i=m.split(/,? *,?[;\\r\\n]+ */);for(let n=1;n<i.length;n++){let f=i[n].trim().replace($,\"\").split(oe);if(f.length%2===0)for(let s=0;s<f.length;s=s+2)e.xFactor!==void 0&&e.yFactor!==void 0&&(l.x.push(Number(f[s])*e.xFactor),l.y.push(Number(f[s+1])*e.yFactor));else o?.warn(`Format error: ${f.toString()}`)}}function ue(e,m,t){let{logger:o}=t,l={},i=Object.keys(e.variables),n=i.length;for(let s of i)l[s]=[];e.data=l;let f=m.split(/,? *,?[;\\r\\n]+ */);for(let s=1;s<f.length;s++){let u=f[s].trim().replace($,\"\").split(oe);if(u.length%n===0)for(let c=0;c<u.length;c++)l[i[c%n]].push(Number(u[c]));else o?.warn(`Wrong number of columns: ${u.toString()}`)}}function B(e,m){e.isXYAdata=!0;let t={};e.data=t;let o=m.split(/\\r?\\n/),l=o[0].replace(/^.*?([A-Z]+).*$/,\"$1\").split(\"\").map(i=>i.toLowerCase());for(let i=1;i<o.length;i++){let n=o[i].replace(/^\\((.*)\\)$/,\"$1\").split(/ *, */);for(let f=0;f<l.length;f++){let s=n[f];switch(l[f]){case\"x\":case\"y\":case\"w\":s=Number.parseFloat(s);break;case\"a\":s=s.replace(/^<(.*)>$/,\"$1\");break;case\"m\":break;default:continue}t[l[f]]||(t[l[f]]=[]),t[l[f]].push(s)}}}import{parseString as le}from\"dynamic-typing\";import{getGyromagneticRatio as ie}from\"gyromagnetic-ratio\";import ae from\"ml-array-median\";function se(e){return Array.isArray(e)?e[0]:e}function Z(e){let{spectra:m}=e,t=m[0].data.y[0],o=t,l=m.length,i=m[0].data.x.length||0,n=new Array(l);for(let r=0;r<l;r++){n[r]=m[r].data.y;for(let a=0;a<i;a++){let d=n[r][a];d<t&&(t=d),d>o&&(o=d)}}let f=m[0].data.x[0],s=m[0].data.x.at(-1),{firstY:u,lastY:c}=pe(e);if(f>s)for(let r of n)r.reverse();u>c&&n.reverse();let b=[];for(let r of n){let a=Float64Array.from(r);for(let d=0;d<a.length;d++)a[d]<0&&(a[d]=-a[d]);b.push(ae(a))}let p=ae(b);return{z:n,minX:Math.min(f,s),maxX:Math.max(f,s),minY:Math.min(u,c),maxY:Math.max(u,c),minZ:t,maxZ:o,noise:p}}function pe(e){let{spectra:m,ntuples:t,info:o}=e;if(t)for(let l of t){let{symbol:i,nucleus:n,units:f}=l;if(i.match(/[F|T]1/)&&f?.toUpperCase().match(\"HZ\")){let s=se(o[\".OBSERVEFREQUENCY\"]),{nucleus:u}=t.find(d=>d.symbol.match(/[F|T]2/));if([s,u,n].some(d=>!d))break;let c=ie(u),b=ie(n),{first:p,last:r}=l,a=b!==null&&c!==null?s*b/c:s;return{firstY:p/a,lastY:r/a}}}return{firstY:m[0].pageValue,lastY:m.at(-1).pageValue}}function H(e,m){let t=e.noise,o=e.z,l,i,n,f,s,u,c,b,p=o.length,r=o[0].length,a,d,g,A,x=e.minX,S=(e.maxX-x)/(r-1),C=e.minY,X=(e.maxY-C)/(p-1),L=e.minZ,N=e.maxZ,Y=m.nbContourLevels*2,F=new Array(Y),y;for(let M=0;M<Y;M++){let U={};F[M]=U;let fe=M%2,Q=(N-m.noiseMultiplier*t)*Math.exp((M>>1)-m.nbContourLevels);fe===0?y=Q+m.noiseMultiplier*t:y=0-Q-m.noiseMultiplier*t;let D=[];if(U.zValue=y,U.lines=D,!(y<=L||y>=N))for(let v=0;v<p-1;v++){let _=o[v],ee=o[v+1];for(let T=0;T<r-1;T++)l=_[T],i=_[T+1],n=ee[T],f=ee[T+1],s=l>y,u=i>y,c=n>y,b=f>y,s!==u&&s!==c&&(a=T+(y-l)/(i-l),d=v,g=T,A=v+(y-l)/(n-l),D.push(a*S+x,d*X+C,g*S+x,A*X+C)),b!==u&&b!==c&&(a=T+1,d=v+1-(y-f)/(i-f),g=T+1-(y-f)/(n-f),A=v+1,D.push(a*S+x,d*X+C,g*S+x,A*X+C)),u!==c&&(a=(T+1-(y-i)/(n-i))*S+x,d=(v+(y-i)/(n-i))*X+C,u!==s&&(g=T+1-(y-i)/(l-i),A=v,D.push(a,d,g*S+x,A*X+C)),c!==s&&(g=T,A=v+1-(y-n)/(l-n),D.push(a,d,g*S+x,A*X+C)),u!==b&&(g=T+1,A=v+(y-i)/(f-i),D.push(a,d,g*S+x,A*X+C)),c!==b&&(g=T+(y-n)/(f-n),A=v+1,D.push(a,d,g*S+x,A*X+C)))}}return{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY,segments:F}}function G(e,m){let t=Z(e);m.noContour||(e.contourLines=H(t,m),delete t.z),e.minMax=t}import{getGyromagneticRatio as W}from\"gyromagnetic-ratio\";function z(e,m){for(let t of e){let o=0,l=0;for(let i of t.spectra){if(t.ntuples?.symbol?(!o&&i.observeFrequency&&(o=i.observeFrequency),!l&&i.shiftOffsetVal&&(l=i.shiftOffsetVal)):(o=i.observeFrequency,l=i.shiftOffsetVal),o&&i.xUnits?.toUpperCase().includes(\"HZ\")&&(i.xUnits=\"PPM\",i.xFactor=i.xFactor!==void 0?i.xFactor/o:void 0,i.firstX=i.firstX!==void 0?i.firstX/o:void 0,i.lastX=i.lastX!==void 0?i.lastX/o:void 0,i.deltaX=i.deltaX!==void 0?i.deltaX/o:void 0,i.data))for(let n=0;n<i.data.x.length;n++)i.data.x[n]/=o;if(l&&i.xUnits.toLowerCase().includes(\"ppm\")&&i.firstX!==void 0&&i.lastX!==void 0){let n=i.firstX-l;if(i.firstX=i.firstX-n,i.lastX=i.lastX-n,i.data)for(let f=0;f<i.data.x.length;f++)i.data.x[f]-=n}if(t.ntuples?.nucleus&&t.ntuples.symbol)for(let n=0;n<t.ntuples.nucleus.length;n++){let f=t.ntuples.symbol[n],s=t.ntuples.nucleus[n];if(f.match(/^[F|T]/)&&!s){if(f.match(/[F|T]1/))if(t.tmp.$NUC2&&typeof t.tmp.$NUC2==\"string\")t.ntuples.nucleus[n]=t.tmp.$NUC2;else{let u=t.ntuples.symbol.indexOf(f.replace(/^([F|T]).*/,\"$12\"));u&&t.ntuples.nucleus[u]&&(t.ntuples.nucleus[n]=t.ntuples.nucleus[u])}f.match(/[F|T]2/)&&typeof t.tmp.$NUC1==\"string\"&&(t.ntuples.nucleus[n]=t.tmp.$NUC1)}f.match(/[F|T]2/)&&(t.yType=t.ntuples.nucleus[0],t.xType&&!W(t.xType)&&(t.xType=t.ntuples.nucleus[1]))}if(o&&t.ntuples?.symbol&&t.ntuples.nucleus){let n=\"\",f=t.ntuples.symbol.indexOf(i.pageSymbol);t.ntuples.units?.[f]&&(n=t.ntuples.units[f]);let{nucleus:s}=t.ntuples;if(!n.toLowerCase().match(/(ppm|seconds)/)&&s.length>1){if(f!==0){let p=\"Not sure about this ntuples format\";if(m){m.warn(p);continue}else throw new Error(p)}let{nucleus:u}=t.ntuples,c=W(u[0]),b=W(u[1]);if(!c||!b){let p=`Problem with determination of gyromagnetic ratio for ${u.join(\"-\")}`;if(m)m.error(p);else throw new Error(p)}else{let p=c/b*o;i.pageValue/=p}}}}}}function J(e){let m=e.spectra[0].data;e.chromatogram={times:m.x.slice(),series:{intensity:{dimension:1,data:m.y.slice()}}}}function q(e,m,t){z(e,t.logger),de(e,t);for(let o of e){if(Object.keys(o.ntuples).length>0){let l=[],i=Object.keys(o.ntuples);for(let n of i){let f=o.ntuples[n];if(f)for(let s=0;s<f.length;s++)l[s]||(l[s]={}),l[s][n]=f[s]}o.ntuples=l}o.twoD&&t.wantXY&&(G(o,t),t.logger?.trace({profiling:!0},\"Finished countour plot calculation\"),t.keepSpectra||delete o.spectra),t.chromatogram&&(o.spectra.length>1?ne(o):J(o),t.logger?.trace({profiling:!0},\"Finished chromatogram calculation\")),delete o.tmp}}function de(e,m){for(let t of e)for(let o in t.meta){let l=t.meta[o];if(typeof l==\"string\"){if(l.startsWith(\"{\")){if(!l.includes(\":\")&&l.endsWith(\"}\")){let i=l.slice(1,-1).split(/[,; ]+/).filter(Boolean);for(let n=0;n<i.length;n++)t.meta[o+String(n)]=m.dynamicTyping?le(i[n]):i[n]}}else if(l.startsWith(\"(\")){let i=l.split(/\\r?\\n/),n=/^\\((?<from>\\d+)\\.\\.(?<to>\\d+)\\).*$/;if(n.test(i[0])){let[f,s]=i[0].match(n)?.slice(1).map(Number)??[],u=i.slice(1).join(\" \").split(/[,; ]+/).filter(Boolean);for(let c=f;c<=s;c++)m.dynamicTyping&&typeof u[c-f]==\"string\"?t.meta[o+String(c)]=le(u[c-f]):t.meta[o+String(c)]=u[c-f]}}}}}function K(e,m,t){let o=-1,l=-1,i=\"\",n=\"\";if(t.indexOf(\"++\")>0)i=t.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/,\"$1\"),n=t.replace(/.*\\.\\.([a-zA-Z0-9]+).*/,\"$1\");else{t=t.replaceAll(/[^a-zA-Z%]/g,\"\"),i=t.charAt(0),n=t.charAt(1),m.variables={};for(let f of t){let s=f.toLowerCase(),u=e.ntuples.symbol?.indexOf(f)||0;if(u===-1)throw new Error(`Symbol undefined: ${f}`);m.variables[s]={};for(let c in e.ntuples)e.ntuples[c]?.[u]&&(m.variables[s][c.replace(/^var/,\"\")]=e.ntuples[c]?.[u])}}o=e.ntuples.symbol?.indexOf(i)??-1,l=e.ntuples.symbol?.indexOf(n)??-1,o===-1&&(o=0),l===-1&&(l=0),e.ntuples.first&&(e.ntuples.first.length>o&&(m.firstX=e.ntuples.first[o]),e.ntuples.first.length>l&&(m.firstY=e.ntuples.first[l])),e.ntuples.last&&(e.ntuples.last.length>o&&(m.lastX=e.ntuples.last[o]),e.ntuples.last.length>l&&(m.lastY=e.ntuples.last[l])),e.ntuples.vardim&&e.ntuples.vardim.length>o&&(m.nbPoints=e.ntuples.vardim[o]),e.ntuples.factor&&(e.ntuples.factor.length>o&&(m.xFactor=e.ntuples.factor[o]),e.ntuples.factor.length>l&&(m.yFactor=e.ntuples.factor[l])),e.ntuples.units&&(e.ntuples.units.length>o&&(e.ntuples.varname?.[o]?m.xUnits=`${e.ntuples.varname[o]} [${e.ntuples.units[o]}]`:m.xUnits=e.ntuples.units[o]),e.ntuples.units.length>l&&(e.ntuples.varname?.[l]?m.yUnits=`${e.ntuples.varname[l]} [${e.ntuples.units[l]}]`:m.yUnits=e.ntuples.units[l]))}function j(e){e.xFactor||(e.xFactor=1),e.yFactor||(e.yFactor=1)}var R=/[ \\t]*,[ \\t]*/,he={removeComments:!1,keepRecordsRegExp:/^$/,canonicDataLabels:!0,canonicMetadataLabels:!1,dynamicTyping:!0,withoutXY:!1,noTrimRegExp:/^$/,chromatogram:!1,keepSpectra:!1,noContour:!1,nbContourLevels:7,noiseMultiplier:5};function pt(e,m={}){e=ge(e);let t={...he,...m};t.logger?.debug(\"Starting jcamp conversion\"),t.wantXY=!t.withoutXY,t.start=Date.now();let o=[],l={entries:[],flatten:[]},i={children:[],spectra:[],ntuples:{},info:{},meta:{},tmp:{}},n=i,f=[],s={data:{}};t.logger?.trace({profiling:!0},\"Before split to LDRS\");let u=e.replaceAll(/[\\r\\n]+##/g,`\n##`).split(`\n##`);t.logger?.trace({profiling:!0},\"Split to LDRS\"),u[0]&&(u[0]=u[0].replace(/^[\\r\\n ]*##/,\"\"));for(let c of u){let b=c.indexOf(\"=\"),p=b>0?c.slice(0,Math.max(0,b)):c,r=b>0?p.match(t.noTrimRegExp)?c.slice(Math.max(0,b+1)):c.slice(Math.max(0,b+1)).trim():\"\",a=p.replaceAll(/[_ -]/g,\"\").toUpperCase();if(a===\"DATATABLE\"){let d=r.indexOf(`\n`);if(d===-1&&(d=r.indexOf(\"\\r\")),d>0){let g=r.slice(0,Math.max(0,d)).split(/[ ,;\\t]+/);K(n,s,g[0]),s.datatable=g[0],g[1]?.includes(\"PEAKS\")?a=\"PEAKTABLE\":g[1]&&(g[1].indexOf(\"XYDATA\")||g[0].indexOf(\"++\")>0)&&(a=\"XYDATA\",s.nbPoints&&s.lastX!==void 0&&s.firstX!==void 0&&(s.deltaX=(s.lastX-s.firstX)/(s.nbPoints-1)))}}if(a===\"XYDATA\"){t.wantXY&&(j(s),r.match(/.*\\+\\+.*/)?(s.nbPoints&&s.lastX!==void 0&&s.firstX!==void 0&&(s.deltaX=(s.lastX-s.firstX)/(s.nbPoints-1)),V(s,r,t)):w(s,r,t),n?.spectra.push(s),s={data:{}});continue}else if(a===\"PEAKTABLE\"){t.wantXY&&(j(s),w(s,r,t),n?.spectra.push(s),s={data:{}});continue}if(a===\"PEAKASSIGNMENTS\"){t.wantXY&&(r.match(/.*[^A-Z]*.*/)&&B(s,r),n?.spectra.push(s),s={data:{}});continue}if(t.removeComments&&(r=r.split(/\\r?\\n/).map(d=>d.replace(/ *\\$\\$.*$/,\"\")).join(`\n`)),a===\"TITLE\"){let d=n;d.children||(d.children=[]),n={spectra:[],ntuples:{},info:{},meta:{},tmp:{}},d.children.push(n),f.push(d),o.push(n),n.title=r}else a===\"DATATYPE\"?(n.dataType=r,r.match(/^nd|\\snd\\s/i)&&(n.twoD=!0)):a===\"NTUPLES\"?r.match(/^nd|\\snd\\s/i)&&(n.twoD=!0):a===\"DATACLASS\"?n.dataClass=r:a===\"JCAMPDX\"?n.jcampDX=E(r):a===\"JCAMPCS\"?n.jcampCS=E(r):a===\"XUNITS\"?s.xUnits=r:a===\"YUNITS\"?s.yUnits=r:a===\"FIRSTX\"?s.firstX=Number(r):a===\"LASTX\"?s.lastX=Number(r):a===\"FIRSTY\"?s.firstY=Number(r):a===\"LASTY\"?s.lastY=Number(r):a===\"NPOINTS\"?s.nbPoints=Number(r):a===\"XFACTOR\"?s.xFactor=Number(r):a===\"YFACTOR\"?s.yFactor=Number(r):a===\"MAXX\"?s.maxX=Number(r):a===\"MINX\"?s.minX=Number(r):a===\"MAXY\"?s.maxY=Number(r):a===\"MINY\"?s.minY=Number(r):a===\"DELTAX\"?s.deltaX=Number(r):a===\".OBSERVEFREQUENCY\"||a===\"$SFO1\"?s.observeFrequency||(s.observeFrequency=Number(r)):a===\".OBSERVENUCLEUS\"?s.xType||(n.xType=r.replaceAll(/[^a-zA-Z0-9]/g,\"\")):a===\"$OFFSET\"?(n.shiftOffsetNum=0,s.shiftOffsetVal||(s.shiftOffsetVal=Number(r))):a===\"$REFERENCEPOINT\"||(a===\"VARNAME\"?n.ntuples.varname=r.split(R):a===\"SYMBOL\"?n.ntuples.symbol=r.split(R):a===\"VARTYPE\"?n.ntuples.vartype=r.split(R):a===\"VARFORM\"?n.ntuples.varform=r.split(R):a===\"VARDIM\"?n.ntuples.vardim=O(r.split(R)):a===\"UNITS\"?n.ntuples.units=r.split(R):a===\"FACTOR\"?n.ntuples.factor=O(r.split(R)):a===\"FIRST\"?n.ntuples.first=O(r.split(R)):a===\"LAST\"?n.ntuples.last=O(r.split(R)):a===\"MIN\"?n.ntuples.min=O(r.split(R)):a===\"MAX\"?n.ntuples.max=O(r.split(R)):a===\".NUCLEUS\"?n.ntuples&&(n.ntuples.nucleus=r.split(R).map(d=>d.replaceAll(/[^a-zA-Z0-9]/g,\"\"))):a===\"PAGE\"?(s.page=r.trim(),s.pageValue=Number(r.replace(/^.*=/,\"\")),s.pageSymbol=s.page.replace(/[=].*/,\"\")):a===\"RETENTIONTIME\"?s.pageValue=Number(r):re(a)?s[k(a)]=r:a===\"SAMPLEDESCRIPTION\"?s.sampleDescription=r:a.startsWith(\"$NUC\")?!n.tmp[a]&&!r.includes(\"off\")&&(n.tmp[a]=r.replaceAll(/[<>]/g,\"\")):a===\"END\"&&(n=f.pop()));if(n?.info&&n.meta&&a.match(t.keepRecordsRegExp)){let d,g;p.startsWith(\"$\")?(g=t.canonicMetadataLabels?a.slice(1):p.slice(1),d=n.meta):(g=t.canonicDataLabels?a:p,d=n.info),t.dynamicTyping&&(r=be(r)),d[g]?(Array.isArray(d[g])||(d[g]=[d[g]]),d[g].push(r)):d[g]=r}}if(t.logger?.trace({profiling:!0},\"Finished parsing\"),q(o,l,t),t.logger?.trace({profiling:!0},\"Total time\"),l.entries=i.children||[],l.flatten=o,t.logger){t.logger.debug(\"Finished jcamp conversion\");for(let c of l.flatten)t.logger.debug(`${c.dataType} - ${c.title}`)}return l}function gt(e,m){let{logger:t,OCL:o}=m;if(!e.info.ATOMLIST||!e.info.BONDLIST){t?.warn(\"No ATOMLIST or BONDLIST in the JCAMP-CS entry\");return}Te(e,t);let l=xe(e.info.ATOMLIST),i=Ae(e.info.BONDLIST),n=Ne(e.info.CHARGE,t),f=Se(e.info.XYRASTER,t),s=Ce(e.info.STEREOCENTER,t),u=ye(o,{atoms:l,bonds:i,charges:n,xyRasters:f,stereocenters:s},t);return{molecule:u,molfile:u.toMolfile()}}function ye(e,m,t){let{atoms:o,bonds:l,charges:i,xyRasters:n,stereocenters:f}=m,s={S:e.Molecule.cBondTypeSingle,D:e.Molecule.cBondTypeDouble,T:e.Molecule.cBondTypeTriple,Q:e.Molecule.cBondTypeQuadruple},u={},c=new e.Molecule(o.length,l.length);for(let p of o){let r=e.Molecule.getAtomicNoFromLabel(p.element);r||(t?.error(`Atomic number of ${p.element} could not be determined`),r=e.Molecule.getAtomicNoFromLabel(\"X\")),u[p.atomNumber]=c.addAtom(r),c.setAtomMapNo(u[p.atomNumber],p.atomNumber,!1)}for(let p of l){if(u[p.atomNumber1]===void 0){t?.error(`A bond goes from atomNumber ${p.atomNumber1} that does not exists`);continue}if(u[p.atomNumber2]===void 0){t?.error(`A bond goes to atomNumber ${p.atomNumber2} that does not exists`);continue}let r=c.addBond(u[p.atomNumber1],u[p.atomNumber2]);c.setBondType(r,s[p.bondType])}for(let p of i){if(u[p.atomNumber]===void 0){t?.error(`A charge goes to atomNumber ${p.atomNumber} that does not exists`);continue}c.setAtomCharge(u[p.atomNumber],p.value)}let b=n.length===0||f.length>0;for(let p of n){if(u[p.atomNumber]===void 0){t?.error(`A XYRASTER goes to atomNumber ${p.atomNumber} that does not exists`);continue}c.setAtomX(u[p.atomNumber],p.x),c.setAtomY(u[p.atomNumber],p.y),c.setAtomZ(u[p.atomNumber],p.z)}c.ensureHelperArrays(e.Molecule.cHelperParities);for(let p of f){let{atomNumber:r,type:a}=p,d=u[r];if(d===void 0){t?.error(`A stereocenter goes to atomNumber ${r} that does not exists`);continue}if(!c.isAtomStereoCenter(d)){t?.warn(`Want to set chirality of atom number ${r} but it is not a stereocenter`);continue}if(c.getAtomParity(d)!==e.Molecule.cAtomParityUnknown){t?.debug(`Atom number ${r} already has a parity defined based on 3D coordinates`);continue}let x=a===\"P\"?e.Molecule.cAtomParity1:e.Molecule.cAtomParity2;c.setAtomParity(u[r],x,!1)}return c.ensureHelperArrays(e.Molecule.cHelperParities),b&&c.inventCoordinates(),c}function xe(e){let m=P(e),t=[];for(let o of m){let[l,i,n]=o.trim().split(/\\s+/);t.push({atomNumber:Number(l),element:i,nbImplicitHydrogens:n?.length>0?Number(n):void 0})}return t}function Ae(e){let m=P(e),t=[];for(let o of m){let[l,i,n]=o.trim().split(/\\s+/);t.push({atomNumber1:Number(l),atomNumber2:Number(i),bondType:n})}return t}function Ne(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n,f]=l.trim().split(/\\s+/);f!==void 0&&m?.warn(\"Charge on multiple atom is not supported\"),o.push({atomNumber:Number(n),value:Number(i)})}return o}function Se(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n,f,s]=l.trim().split(/\\s+/);if(i===void 0){m?.warn(\"XYRASTER without atom number is not supported\");continue}o.push({atomNumber:Number(i),x:Number(n),y:Number(f),z:s!==void 0?Number(s):0})}return o}function Ce(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n]=l.trim().split(/\\s+/);if(![\"P\",\"M\"].includes(n)){m?.warn(`Stereocenter type ${n} is not supported`);continue}o.push({atomNumber:Number(i),type:n})}return o}function P(e){return e.split(/\\r?\\n/).map(m=>E(m)).filter(Boolean)}function Te(e,m){let t=[\"STEREOPAIR\",\"STEREOCENTER\",\"RADICAL\",\"STEREOMOLECULE\"];for(let o of t)e.info[o]&&m?.warn(`JCAMP-CS parser do not support: ${o}`)}export{pt as convert,Le as createTree,gt as parseJcampCS,E as removeComment,$ as removeCommentRegExp};\n","/**\n * Determines the appropriate Kind based on JCAMP data\n * @param data - JCAMP entry data\n * @returns The appropriate Kind or undefined\n */\nexport function getJcampKind(data) {\n    if (!data.dataType || !data.spectra?.[0]?.yUnits) {\n        return undefined;\n    }\n    const dataType = data.dataType.toLowerCase();\n    const yUnits = data.spectra[0].yUnits.toLowerCase();\n    if (dataType.match(/infrared/)) {\n        if (yUnits.match(/absorbance/)) {\n            return IR_ABSORBANCE;\n        }\n        else {\n            return IR_TRANSMITTANCE;\n        }\n    }\n    return undefined;\n}\nexport const IR_TRANSMITTANCE = {\n    normalization: {},\n    importation: {\n        converter: (transmittance) => -Math.log10(transmittance),\n    },\n    kind: 'Infrared',\n    display: {\n        xLabel: 'wavelength [cm-1]',\n        xInverted: true,\n        yLabel: 'Absorbance',\n    },\n};\nexport const IR_ABSORBANCE = {\n    normalization: {},\n    kind: 'Infrared',\n    display: {\n        xLabel: 'wavelength [cm-1]',\n        xInverted: true,\n        yLabel: 'Absorbance',\n    },\n};\nexport const nmr1H = {\n    display: {\n        xLabel: 'δ [ppm]',\n        xInverted: true,\n        yLabel: 'Intensity',\n    },\n};\nexport const nmr13C = {\n    display: {\n        xLabel: 'δ [ppm]',\n        xInverted: true,\n        yLabel: 'Intensity',\n    },\n};\n//# sourceMappingURL=Kinds.js.map","import { convert } from 'jcampconverter';\nimport { getJcampKind } from '../Kinds.js';\n/**\n * Create a spectrum from a JCAMP file\n * @param jcampText - String containing the JCAMP data\n * @returns Parsed spectrum data with kind, meta, and info\n */\nexport default function parseJcamp(jcampText) {\n    const parsed = convert(jcampText, {\n        keepRecordsRegExp: /.*/,\n    }).flatten[0];\n    const kind = getJcampKind(parsed);\n    const data = parsed.spectra[0].data;\n    const { meta, info } = parsed;\n    // Convert the data if needed\n    if (kind?.importation?.converter) {\n        data.y = data.y.map(kind.importation.converter);\n    }\n    return { data, kind, meta, info };\n}\n//# sourceMappingURL=parseJcamp.js.map","/**\n * Parse a matrix from text format\n * @param text - String containing the text data\n * @param options - Parsing options\n * @returns Parsed matrix data with x, meta, matrix, and ids\n */\nexport default function parseMatrix(text, options = {}) {\n    const lines = text.split(/[\\n\\r]+/).filter(Boolean);\n    const { fs = '\\t' } = options;\n    const currentMatrix = [];\n    const ids = [];\n    const meta = [];\n    let x = [];\n    const headers = lines[0].split(fs);\n    const labels = [];\n    for (let i = 0; i < headers.length; i++) {\n        const header = headers[i];\n        if (Number.isNaN(Number(header))) {\n            labels[i] = header;\n        }\n        else {\n            x = headers.slice(i).map(Number);\n            break;\n        }\n    }\n    for (let i = 1; i < lines.length; i++) {\n        const line = lines[i];\n        const parts = line.split('\\t');\n        ids.push(parts[0]);\n        const oneMeta = {};\n        meta.push(oneMeta);\n        for (let j = 1; j < parts.length; j++) {\n            if (j < labels.length) {\n                oneMeta[labels[j]] = parts[j];\n            }\n            else {\n                currentMatrix.push(parts.slice(labels.length).map(Number));\n                break;\n            }\n        }\n    }\n    return { x, meta, matrix: currentMatrix, ids };\n}\n//# sourceMappingURL=parseMatrix.js.map","import { ensureString } from 'ensure-string';\nimport { xyUniqueX, xMaxValue, xIsMonotonic } from 'ml-spectra-processing';\n/**\n * General internal parsing function\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns parsed text file with column information\n */\nexport function parse(text, options = {}) {\n    const { rescale = false, uniqueX = false, bestGuess = false, \n    //@ts-expect-error old library used this property and we want to throw an error so that people are forced to migrate\n    keepInfo, } = options;\n    let { xColumn = 0, yColumn = 1, numberColumns = Number.MAX_SAFE_INTEGER, maxNumberColumns = Number.MAX_SAFE_INTEGER, minNumberColumns = 2, } = options;\n    if (keepInfo !== undefined) {\n        throw new Error('keepInfo has been deprecated, pelase use the new method parseXYAndKeepInfo');\n    }\n    text = ensureString(text);\n    maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n    minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n    const lines = text.split(/[\\r\\n]+/);\n    let matrix = [];\n    const info = [];\n    let position = 0;\n    lines.forEach((line) => {\n        line = line.trim();\n        // we will consider only lines that contains only numbers\n        if (/[0-9]+/.test(line) && /^[0-9eE,;. \\t+-]+$/.test(line)) {\n            let fields = line.split(/,[; \\t]+|[; \\t]+/);\n            if (fields.length === 1) {\n                fields = line.split(/[,; \\t]+/);\n            }\n            if (fields &&\n                fields.length >= minNumberColumns && // we filter lines that have not enough or too many columns\n                fields.length <= maxNumberColumns) {\n                matrix.push(fields.map((value) => parseFloat(value.replace(',', '.'))));\n                position++;\n            }\n        }\n        else if (line) {\n            info.push({ position, value: line });\n        }\n    });\n    if (bestGuess) {\n        if (matrix[0] &&\n            matrix[0].length === 3 &&\n            options.xColumn === undefined &&\n            options.yColumn === undefined) {\n            // is the first column a seuqnetial number ?\n            let skipFirstColumn = true;\n            for (let i = 0; i < matrix.length - 1; i++) {\n                if (Math.abs(matrix[i][0] - matrix[i + 1][0]) !== 1) {\n                    skipFirstColumn = false;\n                }\n            }\n            if (skipFirstColumn) {\n                xColumn = 1;\n                yColumn = 2;\n            }\n        }\n        if (matrix[0] && matrix[0].length > 3) {\n            const xs = [];\n            for (const row of matrix) {\n                for (let i = xColumn; i < row.length; i += 2) {\n                    xs.push(row[i]);\n                }\n            }\n            if (xIsMonotonic(xs)) {\n                numberColumns = 2;\n            }\n        }\n    }\n    if (numberColumns) {\n        const newMatrix = [];\n        for (const row of matrix) {\n            for (let i = 0; i < row.length; i += numberColumns) {\n                newMatrix.push(row.slice(i, i + numberColumns));\n            }\n        }\n        matrix = newMatrix;\n    }\n    let result = {\n        x: matrix.map((row) => row[xColumn]),\n        y: matrix.map((row) => row[yColumn]),\n    };\n    if (uniqueX) {\n        result = xyUniqueX(result, { algorithm: 'sum' });\n    }\n    if (rescale) {\n        const maxY = xMaxValue(result.y);\n        for (let i = 0; i < result.y.length; i++) {\n            result.y[i] /= maxY;\n        }\n    }\n    return {\n        info,\n        data: result,\n    };\n}\n//# sourceMappingURL=parse.js.map","import { parse } from './parse';\nexport * from './ParseXYOptions';\n/**\n * Parse a text-file and convert it to an object {x:[], y:[]}\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data\n */\nexport function parseXY(text, options = {}) {\n    return parse(text, options).data;\n}\n/**\n * Parse a text-file and returns the parsed data and information about the columns\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data with information about the columns\n */\nexport function parseXYAndKeepInfo(text, options = {}) {\n    return parse(text, options);\n}\n//# sourceMappingURL=index.js.map","import { parseXY } from 'xy-parser';\n/**\n * Create a spectrum from a text file\n * @param value - String containing the text data\n * @param options - Parsing options\n * @returns Parsed data object\n */\nexport default function parseText(value, options = {}) {\n    const { kind, parserOptions = {} } = options;\n    const data = parseXY(value, parserOptions);\n    // Convert the data if needed\n    if (kind?.importation?.converter) {\n        data.y = data.y.map(kind.importation.converter);\n    }\n    return { data };\n}\n//# sourceMappingURL=parseText.js.map","import { matrixAutoCorrelation } from 'ml-spectra-processing';\nexport function getAutocorrelation(normalized, index) {\n    return {\n        x: normalized.x,\n        y: matrixAutoCorrelation(normalized.matrix, index),\n    };\n}\n//# sourceMappingURL=getAutocorrelation.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Calculate mean of normalized data\n * @param normalized - Normalized data with x and matrix\n * @returns Mean data with x and y values\n */\nexport function getMeanData(normalized) {\n    const matrix = new Matrix(normalized.matrix);\n    return {\n        x: normalized.x,\n        y: matrix.mean('column'),\n    };\n}\n//# sourceMappingURL=getMeanData.js.map","/**\n * Convert data to text format\n * @param data - Data including matrix, meta, ids, and x values\n * @param options - Conversion options\n * @returns Formatted text string\n */\nexport function convertToText(data, options = {}) {\n    const { fs = '\\t', rs = '\\n' } = options;\n    const { matrix, meta, ids, x } = data;\n    const allKeysObject = {};\n    for (const metum of meta) {\n        if (metum) {\n            for (const key of Object.keys(metum)) {\n                const type = typeof metum[key];\n                if (type === 'number' || type === 'string' || type === 'boolean') {\n                    allKeysObject[key] = true;\n                }\n            }\n        }\n    }\n    const allKeys = Object.keys(allKeysObject);\n    const lines = [];\n    let line = ['id', ...allKeys, ...x];\n    lines.push(line.join(fs));\n    for (let i = 0; i < ids.length; i++) {\n        line = [ids[i]];\n        for (const key of allKeys) {\n            line.push(removeSpecialCharacters(meta[i][key]));\n        }\n        line.push(...matrix[i]);\n        lines.push(line.join(fs));\n    }\n    return lines.join(rs);\n}\nfunction removeSpecialCharacters(value) {\n    if (typeof value !== 'string') {\n        return value;\n    }\n    return value.replaceAll(/[\\t\\n\\r]+/g, ' ');\n}\n//# sourceMappingURL=convertToText.js.map","import { getNormalizedData } from './getNormalizedData.js';\nimport { convertToText } from './util/convertToText.js';\n/**\n * Get normalized data as text\n * @param spectra - Array of spectrum objects\n * @param options - Options for filtering and formatting\n * @returns Text representation of normalized data\n */\nexport function getNormalizedText(spectra, options = {}) {\n    const { fs = '\\t', rs = '\\n' } = options;\n    return convertToText(getNormalizedData(spectra, options), {\n        rs,\n        fs,\n    });\n}\n//# sourceMappingURL=getNormalizedText.js.map","!function(e){var t;\"object\"==typeof exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(\"undefined\"!=typeof window?t=window:\"undefined\"!=typeof global?t=global:\"undefined\"!=typeof self&&(t=self),t.objectHash=e())}(function(){return function r(o,i,u){function s(n,e){if(!i[n]){if(!o[n]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(n,!0);if(a)return a(n,!0);throw new Error(\"Cannot find module '\"+n+\"'\")}e=i[n]={exports:{}};o[n][0].call(e.exports,function(e){var t=o[n][1][e];return s(t||e)},e,e.exports,r,o,i,u)}return i[n].exports}for(var a=\"function\"==typeof require&&require,e=0;e<u.length;e++)s(u[e]);return s}({1:[function(w,b,m){!function(e,n,s,c,d,h,p,g,y){\"use strict\";var r=w(\"crypto\");function t(e,t){t=u(e,t);var n;return void 0===(n=\"passthrough\"!==t.algorithm?r.createHash(t.algorithm):new l).write&&(n.write=n.update,n.end=n.update),f(t,n).dispatch(e),n.update||n.end(\"\"),n.digest?n.digest(\"buffer\"===t.encoding?void 0:t.encoding):(e=n.read(),\"buffer\"!==t.encoding?e.toString(t.encoding):e)}(m=b.exports=t).sha1=function(e){return t(e)},m.keys=function(e){return t(e,{excludeValues:!0,algorithm:\"sha1\",encoding:\"hex\"})},m.MD5=function(e){return t(e,{algorithm:\"md5\",encoding:\"hex\"})},m.keysMD5=function(e){return t(e,{algorithm:\"md5\",encoding:\"hex\",excludeValues:!0})};var o=r.getHashes?r.getHashes().slice():[\"sha1\",\"md5\"],i=(o.push(\"passthrough\"),[\"buffer\",\"hex\",\"binary\",\"base64\"]);function u(e,t){var n={};if(n.algorithm=(t=t||{}).algorithm||\"sha1\",n.encoding=t.encoding||\"hex\",n.excludeValues=!!t.excludeValues,n.algorithm=n.algorithm.toLowerCase(),n.encoding=n.encoding.toLowerCase(),n.ignoreUnknown=!0===t.ignoreUnknown,n.respectType=!1!==t.respectType,n.respectFunctionNames=!1!==t.respectFunctionNames,n.respectFunctionProperties=!1!==t.respectFunctionProperties,n.unorderedArrays=!0===t.unorderedArrays,n.unorderedSets=!1!==t.unorderedSets,n.unorderedObjects=!1!==t.unorderedObjects,n.replacer=t.replacer||void 0,n.excludeKeys=t.excludeKeys||void 0,void 0===e)throw new Error(\"Object argument required.\");for(var r=0;r<o.length;++r)o[r].toLowerCase()===n.algorithm.toLowerCase()&&(n.algorithm=o[r]);if(-1===o.indexOf(n.algorithm))throw new Error('Algorithm \"'+n.algorithm+'\"  not supported. supported values: '+o.join(\", \"));if(-1===i.indexOf(n.encoding)&&\"passthrough\"!==n.algorithm)throw new Error('Encoding \"'+n.encoding+'\"  not supported. supported values: '+i.join(\", \"));return n}function a(e){if(\"function\"==typeof e)return null!=/^function\\s+\\w*\\s*\\(\\s*\\)\\s*{\\s+\\[native code\\]\\s+}$/i.exec(Function.prototype.toString.call(e))}function f(o,t,i){i=i||[];function u(e){return t.update?t.update(e,\"utf8\"):t.write(e,\"utf8\")}return{dispatch:function(e){return this[\"_\"+(null===(e=o.replacer?o.replacer(e):e)?\"null\":typeof e)](e)},_object:function(t){var n,e=Object.prototype.toString.call(t),r=/\\[object (.*)\\]/i.exec(e);r=(r=r?r[1]:\"unknown:[\"+e+\"]\").toLowerCase();if(0<=(e=i.indexOf(t)))return this.dispatch(\"[CIRCULAR:\"+e+\"]\");if(i.push(t),void 0!==s&&s.isBuffer&&s.isBuffer(t))return u(\"buffer:\"),u(t);if(\"object\"===r||\"function\"===r||\"asyncfunction\"===r)return e=Object.keys(t),o.unorderedObjects&&(e=e.sort()),!1===o.respectType||a(t)||e.splice(0,0,\"prototype\",\"__proto__\",\"constructor\"),o.excludeKeys&&(e=e.filter(function(e){return!o.excludeKeys(e)})),u(\"object:\"+e.length+\":\"),n=this,e.forEach(function(e){n.dispatch(e),u(\":\"),o.excludeValues||n.dispatch(t[e]),u(\",\")});if(!this[\"_\"+r]){if(o.ignoreUnknown)return u(\"[\"+r+\"]\");throw new Error('Unknown object type \"'+r+'\"')}this[\"_\"+r](t)},_array:function(e,t){t=void 0!==t?t:!1!==o.unorderedArrays;var n=this;if(u(\"array:\"+e.length+\":\"),!t||e.length<=1)return e.forEach(function(e){return n.dispatch(e)});var r=[],t=e.map(function(e){var t=new l,n=i.slice();return f(o,t,n).dispatch(e),r=r.concat(n.slice(i.length)),t.read().toString()});return i=i.concat(r),t.sort(),this._array(t,!1)},_date:function(e){return u(\"date:\"+e.toJSON())},_symbol:function(e){return u(\"symbol:\"+e.toString())},_error:function(e){return u(\"error:\"+e.toString())},_boolean:function(e){return u(\"bool:\"+e.toString())},_string:function(e){u(\"string:\"+e.length+\":\"),u(e.toString())},_function:function(e){u(\"fn:\"),a(e)?this.dispatch(\"[native]\"):this.dispatch(e.toString()),!1!==o.respectFunctionNames&&this.dispatch(\"function-name:\"+String(e.name)),o.respectFunctionProperties&&this._object(e)},_number:function(e){return u(\"number:\"+e.toString())},_xml:function(e){return u(\"xml:\"+e.toString())},_null:function(){return u(\"Null\")},_undefined:function(){return u(\"Undefined\")},_regexp:function(e){return u(\"regex:\"+e.toString())},_uint8array:function(e){return u(\"uint8array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint8clampedarray:function(e){return u(\"uint8clampedarray:\"),this.dispatch(Array.prototype.slice.call(e))},_int8array:function(e){return u(\"int8array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint16array:function(e){return u(\"uint16array:\"),this.dispatch(Array.prototype.slice.call(e))},_int16array:function(e){return u(\"int16array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint32array:function(e){return u(\"uint32array:\"),this.dispatch(Array.prototype.slice.call(e))},_int32array:function(e){return u(\"int32array:\"),this.dispatch(Array.prototype.slice.call(e))},_float32array:function(e){return u(\"float32array:\"),this.dispatch(Array.prototype.slice.call(e))},_float64array:function(e){return u(\"float64array:\"),this.dispatch(Array.prototype.slice.call(e))},_arraybuffer:function(e){return u(\"arraybuffer:\"),this.dispatch(new Uint8Array(e))},_url:function(e){return u(\"url:\"+e.toString())},_map:function(e){u(\"map:\");e=Array.from(e);return this._array(e,!1!==o.unorderedSets)},_set:function(e){u(\"set:\");e=Array.from(e);return this._array(e,!1!==o.unorderedSets)},_file:function(e){return u(\"file:\"),this.dispatch([e.name,e.size,e.type,e.lastModfied])},_blob:function(){if(o.ignoreUnknown)return u(\"[blob]\");throw Error('Hashing Blob objects is currently not supported\\n(see https://github.com/puleos/object-hash/issues/26)\\nUse \"options.replacer\" or \"options.ignoreUnknown\"\\n')},_domwindow:function(){return u(\"domwindow\")},_bigint:function(e){return u(\"bigint:\"+e.toString())},_process:function(){return u(\"process\")},_timer:function(){return u(\"timer\")},_pipe:function(){return u(\"pipe\")},_tcp:function(){return u(\"tcp\")},_udp:function(){return u(\"udp\")},_tty:function(){return u(\"tty\")},_statwatcher:function(){return u(\"statwatcher\")},_securecontext:function(){return u(\"securecontext\")},_connection:function(){return u(\"connection\")},_zlib:function(){return u(\"zlib\")},_context:function(){return u(\"context\")},_nodescript:function(){return u(\"nodescript\")},_httpparser:function(){return u(\"httpparser\")},_dataview:function(){return u(\"dataview\")},_signal:function(){return u(\"signal\")},_fsevent:function(){return u(\"fsevent\")},_tlswrap:function(){return u(\"tlswrap\")}}}function l(){return{buf:\"\",write:function(e){this.buf+=e},end:function(e){this.buf+=e},read:function(){return this.buf}}}m.writeToStream=function(e,t,n){return void 0===n&&(n=t,t={}),f(t=u(e,t),n).dispatch(e)}}.call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/fake_9a5aa49d.js\",\"/\")},{buffer:3,crypto:5,lYpoI2:11}],2:[function(e,t,f){!function(e,t,n,r,o,i,u,s,a){!function(e){\"use strict\";var a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,t=\"+\".charCodeAt(0),n=\"/\".charCodeAt(0),r=\"0\".charCodeAt(0),o=\"a\".charCodeAt(0),i=\"A\".charCodeAt(0),u=\"-\".charCodeAt(0),s=\"_\".charCodeAt(0);function f(e){e=e.charCodeAt(0);return e===t||e===u?62:e===n||e===s?63:e<r?-1:e<r+10?e-r+26+26:e<i+26?e-i:e<o+26?e-o+26:void 0}e.toByteArray=function(e){var t,n;if(0<e.length%4)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.length,r=\"=\"===e.charAt(r-2)?2:\"=\"===e.charAt(r-1)?1:0,o=new a(3*e.length/4-r),i=0<r?e.length-4:e.length,u=0;function s(e){o[u++]=e}for(t=0;t<i;t+=4,0)s((16711680&(n=f(e.charAt(t))<<18|f(e.charAt(t+1))<<12|f(e.charAt(t+2))<<6|f(e.charAt(t+3))))>>16),s((65280&n)>>8),s(255&n);return 2==r?s(255&(n=f(e.charAt(t))<<2|f(e.charAt(t+1))>>4)):1==r&&(s((n=f(e.charAt(t))<<10|f(e.charAt(t+1))<<4|f(e.charAt(t+2))>>2)>>8&255),s(255&n)),o},e.fromByteArray=function(e){var t,n,r,o,i=e.length%3,u=\"\";function s(e){return\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".charAt(e)}for(t=0,r=e.length-i;t<r;t+=3)n=(e[t]<<16)+(e[t+1]<<8)+e[t+2],u+=s((o=n)>>18&63)+s(o>>12&63)+s(o>>6&63)+s(63&o);switch(i){case 1:u=(u+=s((n=e[e.length-1])>>2))+s(n<<4&63)+\"==\";break;case 2:u=(u=(u+=s((n=(e[e.length-2]<<8)+e[e.length-1])>>10))+s(n>>4&63))+s(n<<2&63)+\"=\"}return u}}(void 0===f?this.base64js={}:f)}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js\",\"/node_modules/gulp-browserify/node_modules/base64-js/lib\")},{buffer:3,lYpoI2:11}],3:[function(O,e,H){!function(e,n,f,r,h,p,g,y,w){var a=O(\"base64-js\"),i=O(\"ieee754\");function f(e,t,n){if(!(this instanceof f))return new f(e,t,n);var r,o,i,u,s=typeof e;if(\"base64\"===t&&\"string\"==s)for(e=(u=e).trim?u.trim():u.replace(/^\\s+|\\s+$/g,\"\");e.length%4!=0;)e+=\"=\";if(\"number\"==s)r=j(e);else if(\"string\"==s)r=f.byteLength(e,t);else{if(\"object\"!=s)throw new Error(\"First argument needs to be a number, array or string.\");r=j(e.length)}if(f._useTypedArrays?o=f._augment(new Uint8Array(r)):((o=this).length=r,o._isBuffer=!0),f._useTypedArrays&&\"number\"==typeof e.byteLength)o._set(e);else if(C(u=e)||f.isBuffer(u)||u&&\"object\"==typeof u&&\"number\"==typeof u.length)for(i=0;i<r;i++)f.isBuffer(e)?o[i]=e.readUInt8(i):o[i]=e[i];else if(\"string\"==s)o.write(e,0,t);else if(\"number\"==s&&!f._useTypedArrays&&!n)for(i=0;i<r;i++)o[i]=0;return o}function b(e,t,n,r){return f._charsWritten=c(function(e){for(var t=[],n=0;n<e.length;n++)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function m(e,t,n,r){return f._charsWritten=c(function(e){for(var t,n,r=[],o=0;o<e.length;o++)n=e.charCodeAt(o),t=n>>8,n=n%256,r.push(n),r.push(t);return r}(t),e,n,r)}function v(e,t,n){var r=\"\";n=Math.min(e.length,n);for(var o=t;o<n;o++)r+=String.fromCharCode(e[o]);return r}function o(e,t,n,r){r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+1<e.length,\"Trying to read beyond buffer length\"));var o,r=e.length;if(!(r<=t))return n?(o=e[t],t+1<r&&(o|=e[t+1]<<8)):(o=e[t]<<8,t+1<r&&(o|=e[t+1])),o}function u(e,t,n,r){r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+3<e.length,\"Trying to read beyond buffer length\"));var o,r=e.length;if(!(r<=t))return n?(t+2<r&&(o=e[t+2]<<16),t+1<r&&(o|=e[t+1]<<8),o|=e[t],t+3<r&&(o+=e[t+3]<<24>>>0)):(t+1<r&&(o=e[t+1]<<16),t+2<r&&(o|=e[t+2]<<8),t+3<r&&(o|=e[t+3]),o+=e[t]<<24>>>0),o}function _(e,t,n,r){if(r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+1<e.length,\"Trying to read beyond buffer length\")),!(e.length<=t))return r=o(e,t,n,!0),32768&r?-1*(65535-r+1):r}function E(e,t,n,r){if(r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+3<e.length,\"Trying to read beyond buffer length\")),!(e.length<=t))return r=u(e,t,n,!0),2147483648&r?-1*(4294967295-r+1):r}function I(e,t,n,r){return r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(t+3<e.length,\"Trying to read beyond buffer length\")),i.read(e,t,n,23,4)}function A(e,t,n,r){return r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(t+7<e.length,\"Trying to read beyond buffer length\")),i.read(e,t,n,52,8)}function s(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+1<e.length,\"trying to write beyond buffer length\"),Y(t,65535));o=e.length;if(!(o<=n))for(var i=0,u=Math.min(o-n,2);i<u;i++)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function l(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+3<e.length,\"trying to write beyond buffer length\"),Y(t,4294967295));o=e.length;if(!(o<=n))for(var i=0,u=Math.min(o-n,4);i<u;i++)e[n+i]=t>>>8*(r?i:3-i)&255}function B(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+1<e.length,\"Trying to write beyond buffer length\"),F(t,32767,-32768)),e.length<=n||s(e,0<=t?t:65535+t+1,n,r,o)}function L(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+3<e.length,\"Trying to write beyond buffer length\"),F(t,2147483647,-2147483648)),e.length<=n||l(e,0<=t?t:4294967295+t+1,n,r,o)}function U(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+3<e.length,\"Trying to write beyond buffer length\"),D(t,34028234663852886e22,-34028234663852886e22)),e.length<=n||i.write(e,t,n,r,23,4)}function x(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+7<e.length,\"Trying to write beyond buffer length\"),D(t,17976931348623157e292,-17976931348623157e292)),e.length<=n||i.write(e,t,n,r,52,8)}H.Buffer=f,H.SlowBuffer=f,H.INSPECT_MAX_BYTES=50,f.poolSize=8192,f._useTypedArrays=function(){try{var e=new ArrayBuffer(0),t=new Uint8Array(e);return t.foo=function(){return 42},42===t.foo()&&\"function\"==typeof t.subarray}catch(e){return!1}}(),f.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"raw\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},f.isBuffer=function(e){return!(null==e||!e._isBuffer)},f.byteLength=function(e,t){var n;switch(e+=\"\",t||\"utf8\"){case\"hex\":n=e.length/2;break;case\"utf8\":case\"utf-8\":n=T(e).length;break;case\"ascii\":case\"binary\":case\"raw\":n=e.length;break;case\"base64\":n=M(e).length;break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":n=2*e.length;break;default:throw new Error(\"Unknown encoding\")}return n},f.concat=function(e,t){if(d(C(e),\"Usage: Buffer.concat(list, [totalLength])\\nlist should be an Array.\"),0===e.length)return new f(0);if(1===e.length)return e[0];if(\"number\"!=typeof t)for(o=t=0;o<e.length;o++)t+=e[o].length;for(var n=new f(t),r=0,o=0;o<e.length;o++){var i=e[o];i.copy(n,r),r+=i.length}return n},f.prototype.write=function(e,t,n,r){isFinite(t)?isFinite(n)||(r=n,n=void 0):(a=r,r=t,t=n,n=a),t=Number(t)||0;var o,i,u,s,a=this.length-t;switch((!n||a<(n=Number(n)))&&(n=a),r=String(r||\"utf8\").toLowerCase()){case\"hex\":o=function(e,t,n,r){n=Number(n)||0;var o=e.length-n;(!r||o<(r=Number(r)))&&(r=o),d((o=t.length)%2==0,\"Invalid hex string\"),o/2<r&&(r=o/2);for(var i=0;i<r;i++){var u=parseInt(t.substr(2*i,2),16);d(!isNaN(u),\"Invalid hex string\"),e[n+i]=u}return f._charsWritten=2*i,i}(this,e,t,n);break;case\"utf8\":case\"utf-8\":i=this,u=t,s=n,o=f._charsWritten=c(T(e),i,u,s);break;case\"ascii\":case\"binary\":o=b(this,e,t,n);break;case\"base64\":i=this,u=t,s=n,o=f._charsWritten=c(M(e),i,u,s);break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":o=m(this,e,t,n);break;default:throw new Error(\"Unknown encoding\")}return o},f.prototype.toString=function(e,t,n){var r,o,i,u,s=this;if(e=String(e||\"utf8\").toLowerCase(),t=Number(t)||0,(n=void 0!==n?Number(n):s.length)===t)return\"\";switch(e){case\"hex\":r=function(e,t,n){var r=e.length;(!t||t<0)&&(t=0);(!n||n<0||r<n)&&(n=r);for(var o=\"\",i=t;i<n;i++)o+=k(e[i]);return o}(s,t,n);break;case\"utf8\":case\"utf-8\":r=function(e,t,n){var r=\"\",o=\"\";n=Math.min(e.length,n);for(var i=t;i<n;i++)e[i]<=127?(r+=N(o)+String.fromCharCode(e[i]),o=\"\"):o+=\"%\"+e[i].toString(16);return r+N(o)}(s,t,n);break;case\"ascii\":case\"binary\":r=v(s,t,n);break;case\"base64\":o=s,u=n,r=0===(i=t)&&u===o.length?a.fromByteArray(o):a.fromByteArray(o.slice(i,u));break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":r=function(e,t,n){for(var r=e.slice(t,n),o=\"\",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}(s,t,n);break;default:throw new Error(\"Unknown encoding\")}return r},f.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}},f.prototype.copy=function(e,t,n,r){if(t=t||0,(r=r||0===r?r:this.length)!==(n=n||0)&&0!==e.length&&0!==this.length){d(n<=r,\"sourceEnd < sourceStart\"),d(0<=t&&t<e.length,\"targetStart out of bounds\"),d(0<=n&&n<this.length,\"sourceStart out of bounds\"),d(0<=r&&r<=this.length,\"sourceEnd out of bounds\"),r>this.length&&(r=this.length);var o=(r=e.length-t<r-n?e.length-t+n:r)-n;if(o<100||!f._useTypedArrays)for(var i=0;i<o;i++)e[i+t]=this[i+n];else e._set(this.subarray(n,n+o),t)}},f.prototype.slice=function(e,t){var n=this.length;if(e=S(e,n,0),t=S(t,n,n),f._useTypedArrays)return f._augment(this.subarray(e,t));for(var r=t-e,o=new f(r,void 0,!0),i=0;i<r;i++)o[i]=this[i+e];return o},f.prototype.get=function(e){return console.log(\".get() is deprecated. Access using array indexes instead.\"),this.readUInt8(e)},f.prototype.set=function(e,t){return console.log(\".set() is deprecated. Access using array indexes instead.\"),this.writeUInt8(e,t)},f.prototype.readUInt8=function(e,t){if(t||(d(null!=e,\"missing offset\"),d(e<this.length,\"Trying to read beyond buffer length\")),!(e>=this.length))return this[e]},f.prototype.readUInt16LE=function(e,t){return o(this,e,!0,t)},f.prototype.readUInt16BE=function(e,t){return o(this,e,!1,t)},f.prototype.readUInt32LE=function(e,t){return u(this,e,!0,t)},f.prototype.readUInt32BE=function(e,t){return u(this,e,!1,t)},f.prototype.readInt8=function(e,t){if(t||(d(null!=e,\"missing offset\"),d(e<this.length,\"Trying to read beyond buffer length\")),!(e>=this.length))return 128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){return _(this,e,!0,t)},f.prototype.readInt16BE=function(e,t){return _(this,e,!1,t)},f.prototype.readInt32LE=function(e,t){return E(this,e,!0,t)},f.prototype.readInt32BE=function(e,t){return E(this,e,!1,t)},f.prototype.readFloatLE=function(e,t){return I(this,e,!0,t)},f.prototype.readFloatBE=function(e,t){return I(this,e,!1,t)},f.prototype.readDoubleLE=function(e,t){return A(this,e,!0,t)},f.prototype.readDoubleBE=function(e,t){return A(this,e,!1,t)},f.prototype.writeUInt8=function(e,t,n){n||(d(null!=e,\"missing value\"),d(null!=t,\"missing offset\"),d(t<this.length,\"trying to write beyond buffer length\"),Y(e,255)),t>=this.length||(this[t]=e)},f.prototype.writeUInt16LE=function(e,t,n){s(this,e,t,!0,n)},f.prototype.writeUInt16BE=function(e,t,n){s(this,e,t,!1,n)},f.prototype.writeUInt32LE=function(e,t,n){l(this,e,t,!0,n)},f.prototype.writeUInt32BE=function(e,t,n){l(this,e,t,!1,n)},f.prototype.writeInt8=function(e,t,n){n||(d(null!=e,\"missing value\"),d(null!=t,\"missing offset\"),d(t<this.length,\"Trying to write beyond buffer length\"),F(e,127,-128)),t>=this.length||(0<=e?this.writeUInt8(e,t,n):this.writeUInt8(255+e+1,t,n))},f.prototype.writeInt16LE=function(e,t,n){B(this,e,t,!0,n)},f.prototype.writeInt16BE=function(e,t,n){B(this,e,t,!1,n)},f.prototype.writeInt32LE=function(e,t,n){L(this,e,t,!0,n)},f.prototype.writeInt32BE=function(e,t,n){L(this,e,t,!1,n)},f.prototype.writeFloatLE=function(e,t,n){U(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){U(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){x(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){x(this,e,t,!1,n)},f.prototype.fill=function(e,t,n){if(t=t||0,n=n||this.length,d(\"number\"==typeof(e=\"string\"==typeof(e=e||0)?e.charCodeAt(0):e)&&!isNaN(e),\"value is not a number\"),d(t<=n,\"end < start\"),n!==t&&0!==this.length){d(0<=t&&t<this.length,\"start out of bounds\"),d(0<=n&&n<=this.length,\"end out of bounds\");for(var r=t;r<n;r++)this[r]=e}},f.prototype.inspect=function(){for(var e=[],t=this.length,n=0;n<t;n++)if(e[n]=k(this[n]),n===H.INSPECT_MAX_BYTES){e[n+1]=\"...\";break}return\"<Buffer \"+e.join(\" \")+\">\"},f.prototype.toArrayBuffer=function(){if(\"undefined\"==typeof Uint8Array)throw new Error(\"Buffer.toArrayBuffer not supported in this browser\");if(f._useTypedArrays)return new f(this).buffer;for(var e=new Uint8Array(this.length),t=0,n=e.length;t<n;t+=1)e[t]=this[t];return e.buffer};var t=f.prototype;function S(e,t,n){return\"number\"!=typeof e?n:t<=(e=~~e)?t:0<=e||0<=(e+=t)?e:0}function j(e){return(e=~~Math.ceil(+e))<0?0:e}function C(e){return(Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)})(e)}function k(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function T(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<=127)t.push(e.charCodeAt(n));else for(var o=n,i=(55296<=r&&r<=57343&&n++,encodeURIComponent(e.slice(o,n+1)).substr(1).split(\"%\")),u=0;u<i.length;u++)t.push(parseInt(i[u],16))}return t}function M(e){return a.toByteArray(e)}function c(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);o++)t[o+n]=e[o];return o}function N(e){try{return decodeURIComponent(e)}catch(e){return String.fromCharCode(65533)}}function Y(e,t){d(\"number\"==typeof e,\"cannot write a non-number as a number\"),d(0<=e,\"specified a negative value for writing an unsigned value\"),d(e<=t,\"value is larger than maximum value for type\"),d(Math.floor(e)===e,\"value has a fractional component\")}function F(e,t,n){d(\"number\"==typeof e,\"cannot write a non-number as a number\"),d(e<=t,\"value larger than maximum allowed value\"),d(n<=e,\"value smaller than minimum allowed value\"),d(Math.floor(e)===e,\"value has a fractional component\")}function D(e,t,n){d(\"number\"==typeof e,\"cannot write a non-number as a number\"),d(e<=t,\"value larger than maximum allowed value\"),d(n<=e,\"value smaller than minimum allowed value\")}function d(e,t){if(!e)throw new Error(t||\"Failed assertion\")}f._augment=function(e){return e._isBuffer=!0,e._get=e.get,e._set=e.set,e.get=t.get,e.set=t.set,e.write=t.write,e.toString=t.toString,e.toLocaleString=t.toString,e.toJSON=t.toJSON,e.copy=t.copy,e.slice=t.slice,e.readUInt8=t.readUInt8,e.readUInt16LE=t.readUInt16LE,e.readUInt16BE=t.readUInt16BE,e.readUInt32LE=t.readUInt32LE,e.readUInt32BE=t.readUInt32BE,e.readInt8=t.readInt8,e.readInt16LE=t.readInt16LE,e.readInt16BE=t.readInt16BE,e.readInt32LE=t.readInt32LE,e.readInt32BE=t.readInt32BE,e.readFloatLE=t.readFloatLE,e.readFloatBE=t.readFloatBE,e.readDoubleLE=t.readDoubleLE,e.readDoubleBE=t.readDoubleBE,e.writeUInt8=t.writeUInt8,e.writeUInt16LE=t.writeUInt16LE,e.writeUInt16BE=t.writeUInt16BE,e.writeUInt32LE=t.writeUInt32LE,e.writeUInt32BE=t.writeUInt32BE,e.writeInt8=t.writeInt8,e.writeInt16LE=t.writeInt16LE,e.writeInt16BE=t.writeInt16BE,e.writeInt32LE=t.writeInt32LE,e.writeInt32BE=t.writeInt32BE,e.writeFloatLE=t.writeFloatLE,e.writeFloatBE=t.writeFloatBE,e.writeDoubleLE=t.writeDoubleLE,e.writeDoubleBE=t.writeDoubleBE,e.fill=t.fill,e.inspect=t.inspect,e.toArrayBuffer=t.toArrayBuffer,e}}.call(this,O(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},O(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/buffer/index.js\",\"/node_modules/gulp-browserify/node_modules/buffer\")},{\"base64-js\":2,buffer:3,ieee754:10,lYpoI2:11}],4:[function(c,d,e){!function(e,t,a,n,r,o,i,u,s){var a=c(\"buffer\").Buffer,f=4,l=new a(f);l.fill(0);d.exports={hash:function(e,t,n,r){for(var o=t(function(e,t){e.length%f!=0&&(n=e.length+(f-e.length%f),e=a.concat([e,l],n));for(var n,r=[],o=t?e.readInt32BE:e.readInt32LE,i=0;i<e.length;i+=f)r.push(o.call(e,i));return r}(e=a.isBuffer(e)?e:new a(e),r),8*e.length),t=r,i=new a(n),u=t?i.writeInt32BE:i.writeInt32LE,s=0;s<o.length;s++)u.call(i,o[s],4*s,!0);return i}}}.call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/helpers.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{buffer:3,lYpoI2:11}],5:[function(v,e,_){!function(l,c,u,d,h,p,g,y,w){var u=v(\"buffer\").Buffer,e=v(\"./sha\"),t=v(\"./sha256\"),n=v(\"./rng\"),b={sha1:e,sha256:t,md5:v(\"./md5\")},s=64,a=new u(s);function r(e,n){var r=b[e=e||\"sha1\"],o=[];return r||i(\"algorithm:\",e,\"is not yet supported\"),{update:function(e){return u.isBuffer(e)||(e=new u(e)),o.push(e),e.length,this},digest:function(e){var t=u.concat(o),t=n?function(e,t,n){u.isBuffer(t)||(t=new u(t)),u.isBuffer(n)||(n=new u(n)),t.length>s?t=e(t):t.length<s&&(t=u.concat([t,a],s));for(var r=new u(s),o=new u(s),i=0;i<s;i++)r[i]=54^t[i],o[i]=92^t[i];return n=e(u.concat([r,n])),e(u.concat([o,n]))}(r,n,t):r(t);return o=null,e?t.toString(e):t}}}function i(){var e=[].slice.call(arguments).join(\" \");throw new Error([e,\"we accept pull requests\",\"http://github.com/dominictarr/crypto-browserify\"].join(\"\\n\"))}a.fill(0),_.createHash=function(e){return r(e)},_.createHmac=r,_.randomBytes=function(e,t){if(!t||!t.call)return new u(n(e));try{t.call(this,void 0,new u(n(e)))}catch(e){t(e)}};var o,f=[\"createCredentials\",\"createCipher\",\"createCipheriv\",\"createDecipher\",\"createDecipheriv\",\"createSign\",\"createVerify\",\"createDiffieHellman\",\"pbkdf2\"],m=function(e){_[e]=function(){i(\"sorry,\",e,\"is not implemented yet\")}};for(o in f)m(f[o],o)}.call(this,v(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},v(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/index.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./md5\":6,\"./rng\":7,\"./sha\":8,\"./sha256\":9,buffer:3,lYpoI2:11}],6:[function(w,b,e){!function(e,r,o,i,u,a,f,l,y){var t=w(\"./helpers\");function n(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;for(var n=1732584193,r=-271733879,o=-1732584194,i=271733878,u=0;u<e.length;u+=16){var s=n,a=r,f=o,l=i,n=c(n,r,o,i,e[u+0],7,-680876936),i=c(i,n,r,o,e[u+1],12,-389564586),o=c(o,i,n,r,e[u+2],17,606105819),r=c(r,o,i,n,e[u+3],22,-1044525330);n=c(n,r,o,i,e[u+4],7,-176418897),i=c(i,n,r,o,e[u+5],12,1200080426),o=c(o,i,n,r,e[u+6],17,-1473231341),r=c(r,o,i,n,e[u+7],22,-45705983),n=c(n,r,o,i,e[u+8],7,1770035416),i=c(i,n,r,o,e[u+9],12,-1958414417),o=c(o,i,n,r,e[u+10],17,-42063),r=c(r,o,i,n,e[u+11],22,-1990404162),n=c(n,r,o,i,e[u+12],7,1804603682),i=c(i,n,r,o,e[u+13],12,-40341101),o=c(o,i,n,r,e[u+14],17,-1502002290),n=d(n,r=c(r,o,i,n,e[u+15],22,1236535329),o,i,e[u+1],5,-165796510),i=d(i,n,r,o,e[u+6],9,-1069501632),o=d(o,i,n,r,e[u+11],14,643717713),r=d(r,o,i,n,e[u+0],20,-373897302),n=d(n,r,o,i,e[u+5],5,-701558691),i=d(i,n,r,o,e[u+10],9,38016083),o=d(o,i,n,r,e[u+15],14,-660478335),r=d(r,o,i,n,e[u+4],20,-405537848),n=d(n,r,o,i,e[u+9],5,568446438),i=d(i,n,r,o,e[u+14],9,-1019803690),o=d(o,i,n,r,e[u+3],14,-187363961),r=d(r,o,i,n,e[u+8],20,1163531501),n=d(n,r,o,i,e[u+13],5,-1444681467),i=d(i,n,r,o,e[u+2],9,-51403784),o=d(o,i,n,r,e[u+7],14,1735328473),n=h(n,r=d(r,o,i,n,e[u+12],20,-1926607734),o,i,e[u+5],4,-378558),i=h(i,n,r,o,e[u+8],11,-2022574463),o=h(o,i,n,r,e[u+11],16,1839030562),r=h(r,o,i,n,e[u+14],23,-35309556),n=h(n,r,o,i,e[u+1],4,-1530992060),i=h(i,n,r,o,e[u+4],11,1272893353),o=h(o,i,n,r,e[u+7],16,-155497632),r=h(r,o,i,n,e[u+10],23,-1094730640),n=h(n,r,o,i,e[u+13],4,681279174),i=h(i,n,r,o,e[u+0],11,-358537222),o=h(o,i,n,r,e[u+3],16,-722521979),r=h(r,o,i,n,e[u+6],23,76029189),n=h(n,r,o,i,e[u+9],4,-640364487),i=h(i,n,r,o,e[u+12],11,-421815835),o=h(o,i,n,r,e[u+15],16,530742520),n=p(n,r=h(r,o,i,n,e[u+2],23,-995338651),o,i,e[u+0],6,-198630844),i=p(i,n,r,o,e[u+7],10,1126891415),o=p(o,i,n,r,e[u+14],15,-1416354905),r=p(r,o,i,n,e[u+5],21,-57434055),n=p(n,r,o,i,e[u+12],6,1700485571),i=p(i,n,r,o,e[u+3],10,-1894986606),o=p(o,i,n,r,e[u+10],15,-1051523),r=p(r,o,i,n,e[u+1],21,-2054922799),n=p(n,r,o,i,e[u+8],6,1873313359),i=p(i,n,r,o,e[u+15],10,-30611744),o=p(o,i,n,r,e[u+6],15,-1560198380),r=p(r,o,i,n,e[u+13],21,1309151649),n=p(n,r,o,i,e[u+4],6,-145523070),i=p(i,n,r,o,e[u+11],10,-1120210379),o=p(o,i,n,r,e[u+2],15,718787259),r=p(r,o,i,n,e[u+9],21,-343485551),n=g(n,s),r=g(r,a),o=g(o,f),i=g(i,l)}return Array(n,r,o,i)}function s(e,t,n,r,o,i){return g((t=g(g(t,e),g(r,i)))<<o|t>>>32-o,n)}function c(e,t,n,r,o,i,u){return s(t&n|~t&r,e,t,o,i,u)}function d(e,t,n,r,o,i,u){return s(t&r|n&~r,e,t,o,i,u)}function h(e,t,n,r,o,i,u){return s(t^n^r,e,t,o,i,u)}function p(e,t,n,r,o,i,u){return s(n^(t|~r),e,t,o,i,u)}function g(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}b.exports=function(e){return t.hash(e,n,16)}}.call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/md5.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:11}],7:[function(e,l,t){!function(e,t,n,r,o,i,u,s,f){var a;l.exports=a||function(e){for(var t,n=new Array(e),r=0;r<e;r++)0==(3&r)&&(t=4294967296*Math.random()),n[r]=t>>>((3&r)<<3)&255;return n}}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/rng.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{buffer:3,lYpoI2:11}],8:[function(c,d,e){!function(e,t,n,r,o,s,a,f,l){var i=c(\"./helpers\");function u(l,c){l[c>>5]|=128<<24-c%32,l[15+(c+64>>9<<4)]=c;for(var e,t,n,r=Array(80),o=1732584193,i=-271733879,u=-1732584194,s=271733878,d=-1009589776,h=0;h<l.length;h+=16){for(var p=o,g=i,y=u,w=s,b=d,a=0;a<80;a++){r[a]=a<16?l[h+a]:v(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var f=m(m(v(o,5),(f=i,t=u,n=s,(e=a)<20?f&t|~f&n:!(e<40)&&e<60?f&t|f&n|t&n:f^t^n)),m(m(d,r[a]),(e=a)<20?1518500249:e<40?1859775393:e<60?-1894007588:-899497514)),d=s,s=u,u=v(i,30),i=o,o=f}o=m(o,p),i=m(i,g),u=m(u,y),s=m(s,w),d=m(d,b)}return Array(o,i,u,s,d)}function m(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function v(e,t){return e<<t|e>>>32-t}d.exports=function(e){return i.hash(e,u,20,!0)}}.call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:11}],9:[function(c,d,e){!function(e,t,n,r,u,s,a,f,l){function b(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function o(e,l){var c,d=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),t=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),n=new Array(64);e[l>>5]|=128<<24-l%32,e[15+(l+64>>9<<4)]=l;for(var r,o,h=0;h<e.length;h+=16){for(var i=t[0],u=t[1],s=t[2],p=t[3],a=t[4],g=t[5],y=t[6],w=t[7],f=0;f<64;f++)n[f]=f<16?e[f+h]:b(b(b((o=n[f-2],m(o,17)^m(o,19)^v(o,10)),n[f-7]),(o=n[f-15],m(o,7)^m(o,18)^v(o,3))),n[f-16]),c=b(b(b(b(w,m(o=a,6)^m(o,11)^m(o,25)),a&g^~a&y),d[f]),n[f]),r=b(m(r=i,2)^m(r,13)^m(r,22),i&u^i&s^u&s),w=y,y=g,g=a,a=b(p,c),p=s,s=u,u=i,i=b(c,r);t[0]=b(i,t[0]),t[1]=b(u,t[1]),t[2]=b(s,t[2]),t[3]=b(p,t[3]),t[4]=b(a,t[4]),t[5]=b(g,t[5]),t[6]=b(y,t[6]),t[7]=b(w,t[7])}return t}var i=c(\"./helpers\"),m=function(e,t){return e>>>t|e<<32-t},v=function(e,t){return e>>>t};d.exports=function(e){return i.hash(e,o,32,!0)}}.call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha256.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:11}],10:[function(e,t,f){!function(e,t,n,r,o,i,u,s,a){f.read=function(e,t,n,r,o){var i,u,l=8*o-r-1,c=(1<<l)-1,d=c>>1,s=-7,a=n?o-1:0,f=n?-1:1,o=e[t+a];for(a+=f,i=o&(1<<-s)-1,o>>=-s,s+=l;0<s;i=256*i+e[t+a],a+=f,s-=8);for(u=i&(1<<-s)-1,i>>=-s,s+=r;0<s;u=256*u+e[t+a],a+=f,s-=8);if(0===i)i=1-d;else{if(i===c)return u?NaN:1/0*(o?-1:1);u+=Math.pow(2,r),i-=d}return(o?-1:1)*u*Math.pow(2,i-r)},f.write=function(e,t,l,n,r,c){var o,i,u=8*c-r-1,s=(1<<u)-1,a=s>>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:c-1,h=n?1:-1,c=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(i=isNaN(t)?1:0,o=s):(o=Math.floor(Math.log(t)/Math.LN2),t*(n=Math.pow(2,-o))<1&&(o--,n*=2),2<=(t+=1<=o+a?d/n:d*Math.pow(2,1-a))*n&&(o++,n/=2),s<=o+a?(i=0,o=s):1<=o+a?(i=(t*n-1)*Math.pow(2,r),o+=a):(i=t*Math.pow(2,a-1)*Math.pow(2,r),o=0));8<=r;e[l+f]=255&i,f+=h,i/=256,r-=8);for(o=o<<r|i,u+=r;0<u;e[l+f]=255&o,f+=h,o/=256,u-=8);e[l+f-h]|=128*c}}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/ieee754/index.js\",\"/node_modules/gulp-browserify/node_modules/ieee754\")},{buffer:3,lYpoI2:11}],11:[function(e,h,t){!function(e,t,n,r,o,f,l,c,d){var i,u,s;function a(){}(e=h.exports={}).nextTick=(u=\"undefined\"!=typeof window&&window.setImmediate,s=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener,u?function(e){return window.setImmediate(e)}:s?(i=[],window.addEventListener(\"message\",function(e){var t=e.source;t!==window&&null!==t||\"process-tick\"!==e.data||(e.stopPropagation(),0<i.length&&i.shift()())},!0),function(e){i.push(e),window.postMessage(\"process-tick\",\"*\")}):function(e){setTimeout(e,0)}),e.title=\"browser\",e.browser=!0,e.env={},e.argv=[],e.on=a,e.addListener=a,e.once=a,e.off=a,e.removeListener=a,e.removeAllListeners=a,e.emit=a,e.binding=function(e){throw new Error(\"process.binding is not supported\")},e.cwd=function(){return\"/\"},e.chdir=function(e){throw new Error(\"process.chdir is not supported\")}}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/process/browser.js\",\"/node_modules/gulp-browserify/node_modules/process\")},{buffer:3,lYpoI2:11}]},{},[1])(1)});","import { xGetFromToIndex, xMultiply, xSum } from 'ml-spectra-processing';\n/**\n * Scale matrix rows to match integration (sum) of target\n * @param matrix - Matrix to scale (modified in place)\n * @param normalizedTarget - Target data with x and y arrays\n * @param range - Optional range to consider\n */\nexport function integration(matrix, normalizedTarget, range = {}) {\n    const fromToIndex = xGetFromToIndex(normalizedTarget.x, range);\n    const targetValue = xSum(normalizedTarget.y, fromToIndex);\n    const values = matrix.map((row) => xSum(row, fromToIndex));\n    for (let i = 0; i < matrix.length; i++) {\n        const factor = targetValue / values[i];\n        matrix[i] = xMultiply(matrix[i], factor);\n    }\n}\n//# sourceMappingURL=integration.js.map","import { xGetFromToIndex, xMaxValue, xMultiply } from 'ml-spectra-processing';\n/**\n * Scale matrix rows to match maximum value of target\n * @param matrix - Matrix to scale (modified in place)\n * @param normalizedTarget - Target data with x and y arrays\n * @param range - Optional range to consider\n */\nexport function max(matrix, normalizedTarget, range = {}) {\n    const fromToIndex = xGetFromToIndex(normalizedTarget.x, range);\n    const targetValue = xMaxValue(normalizedTarget.y, fromToIndex);\n    const values = matrix.map((row) => xMaxValue(row, fromToIndex));\n    for (let i = 0; i < matrix.length; i++) {\n        const factor = targetValue / values[i];\n        matrix[i] = xMultiply(matrix[i], factor);\n    }\n}\n//# sourceMappingURL=max.js.map","import { xGetFromToIndex, xMinValue, xMultiply } from 'ml-spectra-processing';\n/**\n * Scale matrix rows to match minimum value of target\n * @param matrix - Matrix to scale (modified in place)\n * @param normalizedTarget - Target data with x and y arrays\n * @param range - Optional range to consider\n */\nexport function min(matrix, normalizedTarget, range = {}) {\n    const fromToIndex = xGetFromToIndex(normalizedTarget.x, range);\n    const targetValue = xMinValue(normalizedTarget.y, fromToIndex);\n    const values = matrix.map((row) => xMinValue(row, fromToIndex));\n    for (let i = 0; i < matrix.length; i++) {\n        const factor = targetValue / values[i];\n        matrix[i] = xMultiply(matrix[i], factor);\n    }\n}\n//# sourceMappingURL=min.js.map","import { xGetFromToIndex, xMaxValue, xMinValue } from 'ml-spectra-processing';\n/**\n * Scale matrix rows to match min-max range of target\n * @param matrix - Matrix to scale (modified in place)\n * @param normalizedTarget - Target data with x and y arrays\n * @param range - Optional range to consider\n */\nexport function minMax(matrix, normalizedTarget, range = {}) {\n    const fromToIndex = xGetFromToIndex(normalizedTarget.x, range);\n    const targetValue = {\n        min: xMinValue(normalizedTarget.y, fromToIndex),\n        max: xMaxValue(normalizedTarget.y, fromToIndex),\n    };\n    const deltaTarget = targetValue.max - targetValue.min;\n    const minTarget = targetValue.min;\n    const values = matrix.map((row) => {\n        return {\n            min: xMinValue(row, fromToIndex),\n            max: xMaxValue(row, fromToIndex),\n        };\n    });\n    for (let i = 0; i < matrix.length; i++) {\n        const deltaSource = values[i].max - values[i].min;\n        const minSource = values[i].min;\n        const newData = [];\n        for (let j = 0; j < normalizedTarget.y.length; j++) {\n            newData.push(((matrix[i][j] - minSource) / deltaSource) * deltaTarget + minTarget);\n        }\n        matrix[i] = newData;\n    }\n}\n//# sourceMappingURL=minMax.js.map","import { matrixCenterZMean, matrixPQN, matrixZRescale, xGetFromToIndex, xSubtract, xSum, xyMaxYPoint, } from 'ml-spectra-processing';\nimport hash from 'object-hash';\nimport { getNormalizedData } from './getNormalizedData.js';\nimport { integration } from './scaled/integration.js';\nimport { max } from './scaled/max.js';\nimport { min } from './scaled/min.js';\nimport { minMax } from './scaled/minMax.js';\nlet cache = {};\n/**\n * Calculate post-processed data with various transformations and calculations\n * @param spectraProcessor - SpectraProcessor instance\n * @param options - Processing options\n * @returns Post-processed data\n */\nexport function getPostProcessedData(spectraProcessor, options = {}) {\n    const optionsHash = hash(options);\n    if (!spectraProcessor.spectra || spectraProcessor.spectra.length === 0) {\n        return {};\n    }\n    const { scale = {}, ids, ranges, calculations, filters = [] } = options;\n    const { range, targetID, relative, method = '' } = scale;\n    const spectra = spectraProcessor.getSpectra(ids);\n    // Check if we can reuse the cache\n    if (cache.optionsHash === optionsHash) {\n        let validCache = true;\n        for (const spectrum of spectra) {\n            if (!cache.weakMap?.get(spectrum.normalized))\n                validCache = false;\n        }\n        if (validCache)\n            return cache;\n    }\n    const weakMap = new WeakMap();\n    for (const spectrum of spectra) {\n        weakMap.set(spectrum.normalized, true);\n    }\n    const normalizedData = getNormalizedData(spectra);\n    for (const filter of filters) {\n        switch (filter.name) {\n            case 'pqn': {\n                normalizedData.matrix = matrixPQN(normalizedData.matrix, filter.options).data;\n                break;\n            }\n            case 'centerMean': {\n                normalizedData.matrix = matrixCenterZMean(normalizedData.matrix);\n                break;\n            }\n            case 'rescale': {\n                normalizedData.matrix = matrixZRescale(normalizedData.matrix, filter.options);\n                break;\n            }\n            case '':\n            case undefined:\n                break;\n            default:\n                throw new Error(`Unknown matrix filter name: ${filter.name}`);\n        }\n    }\n    const normalizedTarget = targetID\n        ? spectraProcessor.getSpectrum(targetID)?.normalized\n        : spectraProcessor.spectra[0].normalized;\n    if (!normalizedTarget) {\n        throw new Error('No normalized target found');\n    }\n    if (method) {\n        switch (method.toLowerCase()) {\n            case 'min':\n                min(normalizedData.matrix, normalizedTarget, range);\n                break;\n            case 'max':\n                max(normalizedData.matrix, normalizedTarget, range);\n                break;\n            case 'minmax':\n                minMax(normalizedData.matrix, normalizedTarget, range);\n                break;\n            case 'integration':\n                integration(normalizedData.matrix, normalizedTarget, range);\n                break;\n            default:\n                throw new Error(`getPostProcessedData: unknown method: ${method}`);\n        }\n    }\n    if (relative) {\n        for (let i = 0; i < normalizedData.matrix.length; i++) {\n            normalizedData.matrix[i] = xSubtract(normalizedData.matrix[i], normalizedTarget.y);\n        }\n    }\n    const result = normalizedData;\n    if (ranges) {\n        result.ranges = [];\n        for (const spectrum of normalizedData.matrix) {\n            const rangesCopy = structuredClone(ranges);\n            const yNormalized = spectrum;\n            const resultRanges = {};\n            result.ranges.push(resultRanges);\n            for (const currentRange of rangesCopy) {\n                if (currentRange.label) {\n                    const fromToIndex = xGetFromToIndex(normalizedTarget.x, currentRange);\n                    const deltaX = normalizedTarget.x[1] - normalizedTarget.x[0];\n                    currentRange.integration = xSum(yNormalized, fromToIndex) * deltaX;\n                    currentRange.maxPoint = xyMaxYPoint({ x: normalizedData.x, y: yNormalized }, fromToIndex);\n                    resultRanges[currentRange.label] = currentRange;\n                }\n            }\n        }\n    }\n    if (calculations && result.ranges) {\n        result.calculations = result.ranges.map(() => {\n            return {};\n        });\n        const parameters = Object.keys(result.ranges[0]);\n        for (const calculation of calculations) {\n            // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func\n            const callback = new Function(...parameters, `return ${calculation.formula}`);\n            for (let i = 0; i < result.ranges.length; i++) {\n                const oneRanges = result.ranges[i];\n                const values = parameters.map((key) => oneRanges[key].integration);\n                result.calculations[i][calculation.label] = callback(...values);\n            }\n        }\n    }\n    cache = { ...result, optionsHash, weakMap };\n    return cache;\n}\n//# sourceMappingURL=getPostProcessedData.js.map","import { getPostProcessedData } from './getPostProcessedData.js';\nimport { convertToText } from './util/convertToText.js';\n/**\n * Get post-processed data as text\n * @param spectraProcessor - SpectraProcessor instance\n * @param options - Options for post-processing and formatting\n * @returns Text representation of post-processed data\n */\nexport function getPostProcessedText(spectraProcessor, options = {}) {\n    const { fs = '\\t', rs = '\\n', postProcessing: postProcessingOptions = {}, } = options;\n    const data = getPostProcessedData(spectraProcessor, postProcessingOptions);\n    // Only convert if we have valid data\n    if (!data.matrix || !data.x || !data.ids || !data.meta) {\n        return '';\n    }\n    return convertToText({\n        matrix: data.matrix,\n        x: data.x,\n        ids: data.ids,\n        meta: data.meta,\n    }, {\n        rs,\n        fs,\n    });\n}\n//# sourceMappingURL=getPostProcessedText.js.map","import { xyFilterX } from 'ml-spectra-processing';\n/**\n * Get spectrum data with optional filtering and scaling\n * @param spectrum - The spectrum object containing x and y arrays\n * @param options - Configuration options\n * @returns Data object with filtered/scaled x and y arrays\n */\nexport function getData(spectrum, options = {}) {\n    const { xFilter = {}, yFactor = 1 } = options;\n    let data = { x: spectrum.x, y: spectrum.y };\n    if (xFilter) {\n        data = xyFilterX(spectrum, xFilter);\n    }\n    if (yFactor && yFactor !== 1) {\n        data.y = data.y.map((y) => y * yFactor);\n    }\n    return data;\n}\n//# sourceMappingURL=getData.js.map","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 * @param options\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 * @param options\n */\nexport function rescale(data, options = {}) {\n    xRescale(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=rescale.js.map","import { xParetoNormalization } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n */\nexport function paretoNormalization(data) {\n    return {\n        data: {\n            x: data.x,\n            y: xParetoNormalization(data.y),\n        },\n    };\n}\n//# sourceMappingURL=paretoNormalization.js.map","// Based on https://github.com/scijs/cholesky-solve\n\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2013 Eric Arnebäck\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies 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\nTHE SOFTWARE.\n*/\n\nfunction ldlSymbolic(\n  n /* A and L are n-by-n, where n >= 0 */,\n  Ap /* input of size n + 1, not modified */,\n  Ai /* input of size nz=Ap[n], not modified */,\n  Lp /* output of size n + 1, not defined on input */,\n  Parent /* output of size n, not defined on input */,\n  Lnz /* output of size n, not defined on input */,\n  Flag /* workspace of size n, not defn. on input or output */,\n) {\n  let i, k, p, kk, p2;\n\n  for (k = 0; k < n; k++) {\n    /* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */\n    Parent[k] = -1; /* parent of k is not yet known */\n    Flag[k] = k; /* mark node k as visited */\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\n    kk = k; /* kth original, or permuted, column */\n    p2 = Ap[kk + 1];\n    for (p = Ap[kk]; p < p2; p++) {\n      /* A (i,k) is nonzero (original or permuted A) */\n      i = Ai[p];\n\n      if (i < k) {\n        /* follow path from i to root of etree, stop at flagged node */\n        for (; Flag[i] !== k; i = Parent[i]) {\n          /* find parent of i if not yet determined */\n          if (Parent[i] === -1) Parent[i] = k;\n          Lnz[i]++; /* L (k,i) is nonzero */\n          Flag[i] = k; /* mark i as visited */\n        }\n      }\n    }\n  }\n  /* construct Lp index array from Lnz column counts */\n  Lp[0] = 0;\n  for (k = 0; k < n; k++) {\n    Lp[k + 1] = Lp[k] + Lnz[k];\n  }\n}\n\nfunction ldlNumeric(\n  n /* A and L are n-by-n, where n >= 0 */,\n  Ap /* input of size n+1, not modified */,\n  Ai /* input of size nz=Ap[n], not modified */,\n  Ax /* input of size nz=Ap[n], not modified */,\n  Lp /* input of size n+1, not modified */,\n  Parent /* input of size n, not modified */,\n  Lnz /* output of size n, not defn. on input */,\n  Li /* output of size lnz=Lp[n], not defined on input */,\n  Lx /* output of size lnz=Lp[n], not defined on input */,\n  D /* output of size n, not defined on input */,\n  Y /* workspace of size n, not defn. on input or output */,\n  Pattern /* workspace of size n, not defn. on input or output */,\n  Flag /* workspace of size n, not defn. on input or output */,\n) {\n  let yi, lKi;\n  let i, k, p, kk, p2, len, top;\n  for (k = 0; k < n; k++) {\n    /* compute nonzero Pattern of kth row of L, in topological order */\n    Y[k] = 0.0; /* Y(0:k) is now all zero */\n    top = n; /* stack for pattern is empty */\n    Flag[k] = k; /* mark node k as visited */\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\n    kk = k; /* kth original, or permuted, column */\n    p2 = Ap[kk + 1];\n    for (p = Ap[kk]; p < p2; p++) {\n      i = Ai[p]; /* get A(i,k) */\n      if (i <= k) {\n        Y[i] += Ax[p]; /* scatter A(i,k) into Y (sum duplicates) */\n        for (len = 0; Flag[i] !== k; i = Parent[i]) {\n          Pattern[len++] = i; /* L(k,i) is nonzero */\n          Flag[i] = k; /* mark i as visited */\n        }\n        while (len > 0) Pattern[--top] = Pattern[--len];\n      }\n    }\n    /* compute numerical values kth row of L (a sparse triangular solve) */\n    D[k] = Y[k]; /* get D(k,k) and clear Y(k) */\n    Y[k] = 0.0;\n    for (; top < n; top++) {\n      i = Pattern[top]; /* Pattern[top:n-1] is pattern of L(:,k) */\n      yi = Y[i]; /* get and clear Y(i) */\n      Y[i] = 0.0;\n      p2 = Lp[i] + Lnz[i];\n      for (p = Lp[i]; p < p2; p++) {\n        Y[Li[p]] -= Lx[p] * yi;\n      }\n      lKi = yi / D[i]; /* the nonzero entry L(k,i) */\n      D[k] -= lKi * yi;\n      Li[p] = k; /* store L(k,i) in column form of L */\n      Lx[p] = lKi;\n      Lnz[i]++; /* increment count of nonzeros in col i */\n    }\n\n    if (D[k] === 0.0) return k; /* failure, D(k,k) is zero */\n  }\n\n  return n; /* success, diagonal of D is all nonzero */\n}\n\nfunction ldlLsolve(\n  n /* L is n-by-n, where n >= 0 */,\n  X /* size n. right-hand-side on input, soln. on output */,\n  Lp /* input of size n+1, not modified */,\n  Li /* input of size lnz=Lp[n], not modified */,\n  Lx /* input of size lnz=Lp[n], not modified */,\n) {\n  let j, p, p2;\n  for (j = 0; j < n; j++) {\n    p2 = Lp[j + 1];\n    for (p = Lp[j]; p < p2; p++) {\n      X[Li[p]] -= Lx[p] * X[j];\n    }\n  }\n}\n\nfunction ldlDsolve(\n  n /* D is n-by-n, where n >= 0 */,\n  X /* size n. right-hand-side on input, soln. on output */,\n  D /* input of size n, not modified */,\n) {\n  let j;\n  for (j = 0; j < n; j++) {\n    X[j] /= D[j];\n  }\n}\n\nfunction ldlLTsolve(\n  n /* L is n-by-n, where n >= 0 */,\n  X /* size n. right-hand-side on input, soln. on output */,\n  Lp /* input of size n+1, not modified */,\n  Li /* input of size lnz=Lp[n], not modified */,\n  Lx /* input of size lnz=Lp[n], not modified */,\n) {\n  let j, p, p2;\n  for (j = n - 1; j >= 0; j--) {\n    p2 = Lp[j + 1];\n    for (p = Lp[j]; p < p2; p++) {\n      X[j] -= Lx[p] * X[Li[p]];\n    }\n  }\n}\n\nfunction ldlPerm(\n  n /* size of X, B, and P */,\n  X /* output of size n. */,\n  B /* input of size n. */,\n  P /* input permutation array of size n. */,\n) {\n  let j;\n  for (j = 0; j < n; j++) {\n    X[j] = B[P[j]];\n  }\n}\n\nfunction ldlPermt(\n  n /* size of X, B, and P */,\n  X /* output of size n. */,\n  B /* input of size n. */,\n  P /* input permutation array of size n. */,\n) {\n  let j;\n  for (j = 0; j < n; j++) {\n    X[P[j]] = B[j];\n  }\n}\n\nfunction prepare(M, n, P) {\n  // if a permutation was specified, apply it.\n  if (P) {\n    let Pinv = new Array(n);\n\n    for (let k = 0; k < n; k++) {\n      Pinv[P[k]] = k;\n    }\n\n    let Mt = []; // scratch memory\n    // Apply permutation. We make M into P*M*P^T\n    for (let a = 0; a < M.length; ++a) {\n      let ar = Pinv[M[a][0]];\n      let ac = Pinv[M[a][1]];\n\n      // we only store the upper-diagonal elements(since we assume matrix is symmetric, we only need to store these)\n      // if permuted element is below diagonal, we simply transpose it.\n      if (ac < ar) {\n        let t = ac;\n        ac = ar;\n        ar = t;\n      }\n\n      Mt[a] = [];\n      Mt[a][0] = ar;\n      Mt[a][1] = ac;\n      Mt[a][2] = M[a][2];\n    }\n\n    M = Mt; // copy scratch memory.\n  } else {\n    // if P argument is null, we just use an identity permutation.\n    P = [];\n    for (let i = 0; i < n; ++i) {\n      P[i] = i;\n    }\n  }\n\n  // The sparse matrix we are decomposing is A.\n  // Now we shall create A from M.\n  let Ap = new Array(n + 1);\n  let Ai = new Array(M.length);\n  let Ax = new Array(M.length);\n\n  // count number of non-zero elements in columns.\n  let LNZ = [];\n  for (let i = 0; i < n; ++i) {\n    LNZ[i] = 0;\n  }\n  for (let a = 0; a < M.length; ++a) {\n    LNZ[M[a][1]]++;\n  }\n\n  Ap[0] = 0;\n  for (let i = 0; i < n; ++i) {\n    Ap[i + 1] = Ap[i] + LNZ[i];\n  }\n\n  let coloffset = [];\n  for (let a = 0; a < n; ++a) {\n    coloffset[a] = 0;\n  }\n\n  // go through all elements in M, and add them to sparse matrix A.\n  for (let i = 0; i < M.length; ++i) {\n    let e = M[i];\n    let col = e[1];\n\n    let adr = Ap[col] + coloffset[col];\n    Ai[adr] = e[0];\n    Ax[adr] = e[2];\n\n    coloffset[col]++;\n  }\n\n  let D = new Array(n);\n  let Y = new Array(n);\n  let Lp = new Array(n + 1);\n  let Parent = new Array(n);\n  let Lnz = new Array(n);\n  let Flag = new Array(n);\n  let Pattern = new Array(n);\n  let bp1 = new Array(n);\n  let x = new Array(n);\n  let d;\n\n  ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag);\n\n  let Lx = new Array(Lp[n]);\n  let Li = new Array(Lp[n]);\n\n  d = ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag);\n\n  if (d === n) {\n    return (b) => {\n      ldlPerm(n, bp1, b, P);\n      ldlLsolve(n, bp1, Lp, Li, Lx);\n      ldlDsolve(n, bp1, D);\n      ldlLTsolve(n, bp1, Lp, Li, Lx);\n      ldlPermt(n, x, bp1, P);\n\n      return x;\n    };\n  } else {\n    return null;\n  }\n}\n\nexport { prepare as default };\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';\n\nconst getClosestNumber = (array = [], goal = 0) => {\n  const closest = array.reduce((prev, curr) => {\n    return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n  });\n  return closest;\n};\n\nconst getCloseIndex = (array = [], goal = 0) => {\n  const closest = getClosestNumber(array, goal);\n  return array.indexOf(closest);\n};\n\nconst updateSystem = (matrix, y, weights) => {\n  let nbPoints = y.length;\n  let l = nbPoints - 1;\n  let newMatrix = new Array(matrix.length);\n  let newVector = new Float64Array(nbPoints);\n  for (let i = 0; i < l; i++) {\n    let w = weights[i];\n    let diag = i * 2;\n    let next = diag + 1;\n    newMatrix[diag] = matrix[diag].slice();\n    newMatrix[next] = matrix[next].slice();\n    if (w === 0) {\n      newVector[i] = 0;\n    } else {\n      newVector[i] = y[i] * w;\n      newMatrix[diag][2] += w;\n    }\n  }\n  newVector[l] = y[l] * weights[l];\n  newMatrix[l * 2] = matrix[l * 2].slice();\n  newMatrix[l * 2][2] += weights[l];\n\n  return [newMatrix, newVector];\n};\n\nconst getDeltaMatrix = (nbPoints, lambda) => {\n  let matrix = [];\n  let last = nbPoints - 1;\n  for (let i = 0; i < last; i++) {\n    matrix.push([i, i, lambda * 2]);\n    matrix.push([i + 1, i, -1 * lambda]);\n  }\n  matrix[0][2] = lambda;\n  matrix.push([last, last, lambda]);\n  return {\n    lowerTriangularNonZeros: matrix,\n    permutationEncodedArray: cuthillMckee(matrix, nbPoints),\n  };\n};\n\nexport { updateSystem, getDeltaMatrix, getCloseIndex, getClosestNumber };\n","import { xMultiply, xNoiseSanPlot, xAbsoluteSum } from 'ml-spectra-processing';\n\nimport cholesky from './choleskySolver';\nimport { updateSystem, getDeltaMatrix, getCloseIndex } from './utils';\n\nfunction getControlPoints(x, y, options = {}) {\n  const { length } = x;\n  let { controlPoints = Int8Array.from({ length }).fill(0) } = options;\n  const { zones = [], weights = Float64Array.from({ length }).fill(1) } =\n    options;\n\n  if (x.length !== y.length) {\n    throw new RangeError('Y should match the length with X');\n  } else if (controlPoints.length !== x.length) {\n    throw new RangeError('controlPoints should match the length with X');\n  } else if (weights.length !== x.length) {\n    throw new RangeError('weights should match the length with X');\n  }\n\n  zones.forEach((range) => {\n    let indexFrom = getCloseIndex(x, range.from);\n    let indexTo = getCloseIndex(x, range.to);\n    if (indexFrom > indexTo) [indexFrom, indexTo] = [indexTo, indexFrom];\n    for (let i = indexFrom; i < indexTo; i++) {\n      controlPoints[i] = 1;\n    }\n  });\n\n  return {\n    weights:\n      'controlPoints' in options || zones.length > 0\n        ? xMultiply(weights, controlPoints)\n        : weights,\n    controlPoints,\n  };\n}\n\n/**\n * Fit the baseline drift by iteratively changing weights of sum square error between the fitted baseline and original signals,\n * for further information about the parameters you can get the [paper of airPLS](https://github.com/zmzhang/airPLS/blob/main/airPLS_manuscript.pdf)\n * @param {Array<number>} x - x axis data useful when control points or zones are submitted\n * @param {Array<number>} y - Original data\n * @param {object} [options={}] - Options object\n * @param {number} [options.maxIterations = 100] - Maximal number of iterations if the method does not reach the stop criterion\n * @param {number} [options.tolerance = 0.001] - Factor of the sum of absolute value of original data, to compute stop criterion\n * @param {Array<number>} [options.weights = [1,1,...]] - Initial weights vector, default each point has the same weight\n * @param {number} [options.lambda = 100] - Factor of weights matrix in -> [I + lambda D'D]z = x\n * @param {Array<number>} [options.controlPoints = []] - Array of 0|1 to force the baseline cross those points.\n * @param {Array<number>} [options.zones = []] - Array of x axis values (as from - to), to force that baseline cross those zones.\n * @returns {{corrected: Array<number>, error: number, iteration: number, baseline: Array<number>}}\n */\n\nexport default function airPLS(x, y, options = {}) {\n  const { weights, controlPoints } = getControlPoints(x, y, options);\n  let { maxIterations = 100, lambda = 10, tolerance = 0.001 } = options;\n\n  let baseline, iteration;\n  let sumNegDifferences = Number.MAX_SAFE_INTEGER;\n  const corrected = Float64Array.from(y);\n  let stopCriterion = getStopCriterion(y, tolerance);\n\n  const { length } = y;\n  let { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(\n    length,\n    lambda,\n  );\n\n  let threshold = 1;\n  const l = length - 1;\n  let prevNegSum = Number.MAX_SAFE_INTEGER;\n  for (\n    iteration = 0;\n    iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion;\n    iteration++\n  ) {\n    let [leftHandSide, rightHandSide] = updateSystem(\n      lowerTriangularNonZeros,\n      y,\n      weights,\n    );\n\n    let cho = cholesky(leftHandSide, length, permutationEncodedArray);\n\n    baseline = cho(rightHandSide);\n\n    sumNegDifferences = applyCorrection(y, baseline, corrected);\n    if (iteration === 1) {\n      const { positive } = xNoiseSanPlot(corrected);\n      threshold = positive;\n    } else {\n      const absChange = Math.abs(prevNegSum / sumNegDifferences);\n      if (absChange < 1.01 && absChange > 0.99) {\n        break;\n      }\n    }\n\n    prevNegSum = sumNegDifferences + 0;\n    for (let i = 1; i < l; i++) {\n      const diff = corrected[i];\n      if (controlPoints[i] < 1 && Math.abs(diff) > threshold) {\n        weights[i] = 0;\n      } else {\n        const factor = diff > 0 ? -1 : 1;\n        weights[i] = Math.exp(\n          (factor * (iteration * diff)) / Math.abs(sumNegDifferences),\n        );\n      }\n    }\n\n    weights[0] = 1;\n    weights[l] = 1;\n  }\n\n  return {\n    corrected,\n    baseline,\n    iteration,\n    error: sumNegDifferences,\n  };\n\n  function applyCorrection(y, baseline, corrected) {\n    let sumNegDifferences = 0;\n    for (let i = 0; i < y.length; i++) {\n      let diff = y[i] - baseline[i];\n      if (diff < 0) sumNegDifferences += diff;\n      corrected[i] = diff;\n    }\n\n    return sumNegDifferences;\n  }\n}\n\nfunction getStopCriterion(y, tolerance) {\n  let sum = xAbsoluteSum(y);\n  return tolerance * sum;\n}\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","import { isAnyArray } from 'is-any-array';\n/**\n * Check that x and y are arrays with the same length.\n * @param x - first array\n * @param y - second array\n * @throws if x or y are not the same length, or if they are not arrays\n */\nexport function checkArrayLength(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//# sourceMappingURL=checkArrayLength.js.map","import { isAnyArray } from 'is-any-array';\nimport { checkArrayLength } from './checkArrayLength';\nexport class BaseRegression {\n    constructor() {\n        if (new.target === BaseRegression) {\n            throw new Error('BaseRegression must be subclassed');\n        }\n    }\n    predict(x) {\n        if (typeof x === 'number') {\n            return this._predict(x);\n        }\n        else if (isAnyArray(x)) {\n            const y = [];\n            for (const xVal of x) {\n                y.push(this._predict(xVal));\n            }\n            return y;\n        }\n        else {\n            throw new TypeError('x must be a number or array');\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _predict(x) {\n        throw new Error('_predict must be implemented');\n    }\n    train() {\n        // Do nothing for this package\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toString(precision) {\n        return '';\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toLaTeX(precision) {\n        return '';\n    }\n    /**\n     * Return the correlation coefficient of determination (r) and chi-square.\n     * @param x - explanatory variable\n     * @param y - response variable\n     * @return - Object with further statistics.\n     */\n    score(x, y) {\n        checkArrayLength(x, y);\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        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        const r = (n * xY - xSum * ySum) /\n            Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n        return {\n            r,\n            r2: r * r,\n            chi2,\n            rmsd: Math.sqrt(rmsd / n),\n        };\n    }\n}\n//# sourceMappingURL=BaseRegression.js.map","/**\n * Cast `number` to string. Optionally `digits` specifies significant figures.\n * @param number\n * @param figures\n * @returns - A string representation of `number`.\n */\nexport function maybeToPrecision(number, figures) {\n    if (number < 0) {\n        number = 0 - number;\n        if (typeof figures === 'number') {\n            return `- ${number.toPrecision(figures)}`;\n        }\n        else {\n            return `- ${number.toString()}`;\n        }\n    }\n    else if (typeof figures === 'number') {\n        return number.toPrecision(figures);\n    }\n    else {\n        return number.toString();\n    }\n}\n//# sourceMappingURL=maybeToPrecision.js.map","import { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\nimport { BaseRegression, checkArrayLength, maybeToPrecision, } from 'ml-regression-base';\nexport class PolynomialRegression extends BaseRegression {\n    /**\n     * @param x - independent or explanatory variable\n     * @param y - dependent or response variable\n     * @param degree - degree of the polynomial regression, or array of powers to be used. When degree is an array, intercept at zero is forced to false/ignored.\n     * @example `new PolynomialRegression(x, y, 2)`, in this case, you can pass the option `interceptAtZero`, if you need it.\n     * @param options\n     * @example `new PolynomialRegression(x, y, [1, 3, 5])`\n     * Each of the degrees corresponds to a column, so if you have them switched, just do:\n     * @example `new PolynomialRegression(x, y, [3, 1, 5])`\n     * @param options.interceptAtZero - force the polynomial regression so that f(0) = 0\n     */\n    constructor(x, y, degree, options = {}) {\n        super();\n        // @ts-expect-error internal use only\n        if (x === true) {\n            // @ts-expect-error internal use only\n            this.degree = y.degree;\n            // @ts-expect-error internal use only\n            this.powers = y.powers;\n            // @ts-expect-error internal use only\n            this.coefficients = y.coefficients;\n        }\n        else {\n            checkArrayLength(x, y);\n            const result = regress(x, y, degree, options);\n            this.degree = result.degree;\n            this.powers = result.powers;\n            this.coefficients = result.coefficients;\n        }\n    }\n    _predict(x) {\n        let y = 0;\n        for (let k = 0; k < this.powers.length; k++) {\n            y += this.coefficients[k] * x ** this.powers[k];\n        }\n        return y;\n    }\n    toJSON() {\n        return {\n            name: 'polynomialRegression',\n            degree: this.degree,\n            powers: this.powers,\n            coefficients: this.coefficients,\n        };\n    }\n    toString(precision) {\n        return this._toFormula(precision, false);\n    }\n    toLaTeX(precision) {\n        return this._toFormula(precision, true);\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        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                }\n                else if (this.powers[k] === 1) {\n                    str = `${maybeToPrecision(this.coefficients[k], precision) + times}x`;\n                }\n                else {\n                    str = `${maybeToPrecision(this.coefficients[k], precision) + times}x${sup}${this.powers[k]}${closeSup}`;\n                }\n                if (this.coefficients[k] > 0 && k !== this.coefficients.length - 1) {\n                    str = ` + ${str}`;\n                }\n                else if (k !== this.coefficients.length - 1) {\n                    str = ` ${str}`;\n                }\n            }\n            fn = str + fn;\n        }\n        if (fn.startsWith('+')) {\n            fn = fn.slice(1);\n        }\n        return `f(x) = ${fn}`;\n    }\n    static load(json) {\n        if (json.name !== 'polynomialRegression') {\n            throw new TypeError('not a polynomial regression model');\n        }\n        // @ts-expect-error internal use only\n        return new PolynomialRegression(true, json);\n    }\n}\n/**\n * Perform a polynomial regression on the given data set.\n * This is an internal function.\n * @param x - independent or explanatory variable\n * @param y - dependent or response variable\n * @param degree - degree of the polynomial regression\n * @param options.interceptAtZero - force the polynomial regression so that $f(0) = 0$\n * @param options\n */\nfunction regress(x, y, degree, options = {}) {\n    const n = x.length;\n    let { interceptAtZero = false } = options;\n    let powers = [];\n    if (Array.isArray(degree)) {\n        powers = degree;\n        interceptAtZero = false; //must be false in this case\n    }\n    else if (typeof degree === 'number') {\n        if (interceptAtZero) {\n            powers = new Array(degree);\n            for (let k = 0; k < degree; k++) {\n                powers[k] = k + 1;\n            }\n        }\n        else {\n            powers = new Array(degree + 1);\n            for (let k = 0; k <= degree; k++) {\n                powers[k] = k;\n            }\n        }\n    }\n    const nCoefficients = powers.length; //1 per power, in any case.\n    const F = new Matrix(n, nCoefficients);\n    const Y = new Matrix([y]);\n    for (let k = 0; k < nCoefficients; k++) {\n        for (let i = 0; i < n; i++) {\n            if (powers[k] === 0) {\n                F.set(i, k, 1);\n            }\n            else {\n                F.set(i, k, x[i] ** powers[k]);\n            }\n        }\n    }\n    const FT = new MatrixTransposeView(F);\n    const A = FT.mmul(F);\n    const B = FT.mmul(new MatrixTransposeView(Y));\n    return {\n        coefficients: solve(A, B).to1DArray(),\n        degree: Math.max(...powers),\n        powers,\n    };\n}\n//# sourceMappingURL=index.js.map","import { PolynomialRegression } from 'ml-regression-polynomial';\n\n/**\n * Iterative regression-based baseline correction\n * @param {Array<number>} x - Independent axis variable\n * @param {Array<number>} y - Dependent axis variable\n * @param {object} [options] - Options object\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regressionOptions] - Options for regressionFunction\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\n */\nexport function baselineCorrectionRegression(x, y, options = {}) {\n  let {\n    maxIterations = 100,\n    Regression = PolynomialRegression,\n    regressionOptions,\n    tolerance = 0.001,\n  } = options;\n\n  if (!regressionOptions && Regression === PolynomialRegression) {\n    regressionOptions = 3;\n  }\n\n  let baseline = y.slice();\n  let fitting = y.slice();\n  let oldFitting = y;\n  let iteration = 0;\n  let delta;\n  let regression;\n  while (iteration < maxIterations) {\n    // Calculate the fitting result\n    regression = new Regression(x, baseline, regressionOptions);\n\n    delta = 0;\n    for (let i = 0; i < baseline.length; i++) {\n      fitting[i] = regression.predict(x[i]);\n      if (baseline[i] > fitting[i]) {\n        baseline[i] = fitting[i];\n      }\n\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\n    }\n\n    // Stop criterion\n    if (delta < tolerance) {\n      break;\n    } else {\n      oldFitting = fitting.slice();\n      iteration++;\n    }\n  }\n\n  // removes baseline\n  let corrected = new Array(baseline.length);\n  for (let j = 0; j < baseline.length; j++) {\n    corrected[j] = y[j] - baseline[j];\n  }\n\n  return {\n    corrected,\n    delta,\n    iteration,\n    baseline,\n    regression,\n  };\n}\n","import sequentialFill from 'ml-array-sequential-fill';\nimport { baselineCorrectionRegression } 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 = baselineCorrectionRegression(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","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,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = { ...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, correctedSpectrum: corrected };\n}\n","import { isAnyArray } from 'is-any-array';\nimport { xMean, xMaxValue, xMinValue } from 'ml-spectra-processing';\nexport function rollingBall(spectrum, options = {}) {\n    if (!isAnyArray(spectrum)) {\n        throw new Error('Spectrum must be an array');\n    }\n    if (spectrum.length === 0) {\n        throw new TypeError('Spectrum must not be empty');\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    // windowM 4 percent of spectrum length\n    // windowS 8 percent of spectrum length\n    const { windowM = Math.round(numberPoints * 0.04), windowS = Math.round(numberPoints * 0.08), } = options;\n    // fi(1) in original paper\n    for (let i = 0; i < spectrum.length; i++) {\n        const windowLeft = Math.max(0, i - windowM);\n        const windowRight = Math.min(i + windowM + 1, spectrum.length);\n        minima[i] = xMinValue(spectrum, {\n            fromIndex: windowLeft,\n            toIndex: windowRight,\n        });\n    }\n    // fi in original paper\n    for (let i = 0; i < minima.length; i++) {\n        const windowLeft = Math.max(0, i - windowM);\n        const windowRight = Math.min(i + windowM + 1, minima.length);\n        maxima[i] = xMaxValue(minima, {\n            fromIndex: windowLeft,\n            toIndex: windowRight,\n        });\n    }\n    for (let i = 0; i < minima.length; i++) {\n        const windowLeft = Math.max(0, i - windowS);\n        const windowRight = Math.min(i + windowS + 1, maxima.length);\n        baseline[i] = xMean(maxima.subarray(windowLeft, windowRight));\n    }\n    return baseline;\n}\n//# sourceMappingURL=rollingBall.js.map","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, 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,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = { ...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, 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    const { 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    const half = Math.floor(windowSize / 2);\n    const np = ys.length;\n    const ans = new Float64Array(np);\n    const 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 = xs ** derivative;\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        const wg1 = weights[half - i - 1];\n        const 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    const 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 (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 if (k === 0 && s === 0) {\n        Grampoly = 1;\n    }\n    else {\n        Grampoly = 0;\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    const weights = new Array(m);\n    const 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 * @param options\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 * @param options\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 * @param options\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 * @param options\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 { xyGrowingX } 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 reverseIfNeeded(data) {\n    return { data: xyGrowingX(data) };\n}\n//# sourceMappingURL=reverseIfNeeded.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 { xAdd, xMaxValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMaxX(data, options = {}) {\n    const { max = 1 } = options;\n    const existingMax = xMaxValue(data.x);\n    if (existingMax === max) {\n        return { data };\n    }\n    return {\n        data: {\n            x: xAdd(data.x, max - existingMax),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=setMaxX.js.map","import { xAdd, xMinValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMinX(data, options = {}) {\n    const { min = 0 } = options;\n    const existingMin = xMinValue(data.x);\n    if (existingMin === min) {\n        return { data };\n    }\n    return {\n        data: {\n            x: xAdd(data.x, min - existingMin),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=setMinX.js.map","export function getMinMaxIntervalsDy(y, x, dY, dX) {\n    let lastMax = null;\n    let lastMin = null;\n    const intervalL = [];\n    const intervalR = [];\n    for (let i = 1; i < y.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    }\n    return { intervalL, intervalR };\n}\n//# sourceMappingURL=getMinMaxIntervals.js.map","export function tryMatchOneIntervalWithMinData(options) {\n    const { x, lastK, minData, yThreshold, intervalWidth, intervalCenter, yData, } = options;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let possible = -1;\n    let newLastIndex = lastK;\n    for (let k = newLastIndex + 1; k < minData.length; k++) {\n        const centerIndex = minData[k];\n        if (yData[centerIndex] <= yThreshold) {\n            continue;\n        }\n        const deltaX = x[centerIndex];\n        const currentDistance = Math.abs(deltaX - intervalCenter);\n        if (currentDistance < intervalWidth) {\n            if (currentDistance < minDistance) {\n                possible = k;\n            }\n            newLastIndex = k;\n        }\n        if (currentDistance >= minDistance)\n            break;\n        minDistance = currentDistance;\n    }\n    return { lastIndex: newLastIndex, possible };\n}\n//# sourceMappingURL=tryMatchOneIntervalWithMinData.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\nexport function autoAlgorithm(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const crossDy = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < 0 && dY[i + 1] > 0) || (dY[i] > 0 && dY[i + 1] < 0)) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        // Handle exact zero\n        if (dY[i] === 0 &&\n            dY[i] < Math.abs(dY[i + 1]) &&\n            dY[i] < Math.abs(dY[i - 1])) {\n            crossDy.push(i);\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    const peaks = [];\n    let [lastK, lastJ] = [-1, -1];\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        let yIndex = -1;\n        let match = tryMatchOneIntervalWithMinData({\n            x,\n            yData,\n            lastK,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            minData: crossDy,\n        });\n        lastK = match.lastIndex;\n        if (match.possible !== -1) {\n            yIndex = crossDy[match.possible];\n        }\n        else {\n            match = tryMatchOneIntervalWithMinData({\n                x,\n                yData,\n                yThreshold,\n                lastK: lastJ,\n                intervalWidth,\n                intervalCenter,\n                minData: minddY,\n            });\n            if (match.possible !== -1) {\n                yIndex = minddY[match.possible];\n            }\n            lastJ = match.lastIndex;\n        }\n        if (yIndex !== -1) {\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[yIndex],\n                y: y[yIndex],\n                width,\n                index: yIndex,\n                ddY: ddY[yIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n    }\n    return peaks;\n}\n//# sourceMappingURL=autoAlgorithm.js.map","import { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\nexport function getPeakFromIntervals(options) {\n    let lastK = -1;\n    const peaks = [];\n    const { x, ddY, yData, yThreshold, intervalR, intervalL, minData } = options;\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        const { possible = -1, lastIndex } = tryMatchOneIntervalWithMinData({\n            x,\n            lastK,\n            minData,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            yData,\n        });\n        if (possible !== -1) {\n            const centerIndex = minData[possible];\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[centerIndex],\n                y: yData[centerIndex],\n                width,\n                index: centerIndex,\n                ddY: ddY[centerIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n        lastK = lastIndex;\n    }\n    return peaks;\n}\n//# sourceMappingURL=getPeaksFromIntervals.js.map","/**\n * Finds the indices where the first derivative crosses zero (sign change),\n * which are potential peak positions. This function does not detect zero-crossings\n * in regions with consecutive zero values in the derivative (flat regions).\n *\n * @param input - Object containing the y values and their first derivative (dY).\n * @returns Array of indices where the first derivative crosses zero (excluding consecutive zeros).\n */\nexport function xGetCrossZeroPoints(input) {\n    const { y, dY } = input;\n    const crossDy = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if (isLessAndGreaterThanZero(dY[i], dY[i + 1])) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        else if (\n        // Handle exact zero\n        dY[i] === 0 &&\n            isLessAndGreaterThanZero(dY[i - 1], dY[i + 1])) {\n            crossDy.push(i);\n        }\n    }\n    return crossDy;\n}\nfunction isLessAndGreaterThanZero(back, next) {\n    return (back < 0 && next > 0) || (back > 0 && next < 0);\n}\n//# sourceMappingURL=xGetCrossZeroPoints.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\nimport { xGetCrossZeroPoints } from \"./xGetCrossZeroPoints.js\";\nexport function firstDerivative(input) {\n    const { y, x, dY, dX, yData, yThreshold, ddY } = input;\n    const crossDy = xGetCrossZeroPoints(input);\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    return getPeakFromIntervals({\n        minData: crossDy,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=firstDerivative.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\nexport function secondDerivative(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < y.length - 1; ++i) {\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    return getPeakFromIntervals({\n        minData: minddY,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=secondDerivative.js.map","/**\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 if (y[currentIndex + 1] >= y[currentIndex] &&\n            y[currentIndex + 1] >= y[currentIndex + 2]) {\n            currentIndex++;\n        }\n        else if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n            y[currentIndex - 2] >= y[currentIndex - 1]) {\n            currentIndex -= 2;\n        }\n        else if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n            y[currentIndex + 2] >= y[currentIndex + 3]) {\n            currentIndex += 2;\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            const alpha = 20 * Math.log10(y[currentIndex - 1]);\n            const beta = 20 * Math.log10(y[currentIndex]);\n            const gamma = 20 * Math.log10(y[currentIndex + 1]);\n            const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            const xCurrent = x[currentIndex];\n            const xPrevious = x[currentIndex - 1];\n            peak.x = xCurrent + (xCurrent - xPrevious) * 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, xIsMonotonic, xMinMaxValues, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { autoAlgorithm } from \"./algorithms/autoAlgorithm.js\";\nimport { firstDerivative } from \"./algorithms/firstDerivative.js\";\nimport { secondDerivative } from \"./algorithms/secondDerivative.js\";\nimport { optimizeTop } from \"./utils/optimizeTop.js\";\n/**\n * Global spectra deconvolution\n * @param  data - Object data with x and y arrays. Values in x has to be growing\n * @param options\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 */\nexport function gsd(data, options = {}) {\n    let { noiseLevel } = options;\n    const { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, peakDetectionAlgorithm = 'second', } = options;\n    const { x } = data;\n    let { y } = data;\n    if (xIsMonotonic(x) !== 1) {\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    const isEquallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (isEquallySpaced) {\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 if (!maxCriteria) {\n        noiseLevel *= -1;\n    }\n    if (!maxCriteria) {\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    const xValue = isEquallySpaced ? x[1] - x[0] : x;\n    const yData = smoothY\n        ? sgg(y, xValue, {\n            ...sgOptions,\n            derivative: 0,\n        })\n        : y;\n    const { min: minY, max: maxY } = xMinMaxValues(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const dY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 1,\n    });\n    const ddY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 2,\n    });\n    const yThreshold = Math.max(noiseLevel, minY + (maxY - minY) * minMaxRatio);\n    const dX = x[1] - x[0];\n    const peakData = { x, y, yData, dY, ddY, dX, yThreshold };\n    let peaks = [];\n    if (peakDetectionAlgorithm === 'first') {\n        peaks = firstDerivative(peakData);\n    }\n    else if (peakDetectionAlgorithm === 'second') {\n        peaks = secondDerivative(peakData);\n    }\n    else {\n        peaks = autoAlgorithm(peakData);\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 { xAdd, xFindClosestIndex, xMean } from 'ml-spectra-processing';\n/**\n * Filter that allows to calibrateX the x axis based on the presence of peaks\n * @param data\n * @param options\n */\nexport function calibrateX(data, options = {}) {\n    const { targetX = 0, nbPeaks = 1, from = data.x[0], to = data.x.at(-1), gsd: gsdOptions = {\n        minMaxRatio: 0.1,\n        realTopDetection: true,\n        smoothY: true,\n        sgOptions: {\n            windowSize: 7,\n            polynomial: 3,\n        },\n    }, } = options;\n    const fromIndex = xFindClosestIndex(data.x, from);\n    const toIndex = xFindClosestIndex(data.x, to);\n    let peaks = gsd({\n        x: data.x.subarray(fromIndex, toIndex),\n        y: data.y.subarray(fromIndex, toIndex),\n    }, gsdOptions);\n    peaks.sort((a, b) => b.y - a.y);\n    peaks = peaks.slice(0, nbPeaks);\n    if (peaks.length < nbPeaks)\n        return { data };\n    const middle = xMean(peaks.map((peak) => peak.x));\n    return { data: { x: xAdd(data.x, targetX - middle), y: data.y } };\n}\n//# sourceMappingURL=calibrateX.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function xFunction(data, options = {}) {\n    return {\n        data: {\n            x: xApplyFunctionStr(data.x, {\n                variableLabel: 'x',\n                fctString: options.function,\n            }),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=xFunction.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function yFunction(data, options = {}) {\n    return {\n        data: {\n            x: data.x,\n            y: xApplyFunctionStr(data.y, {\n                variableLabel: 'y',\n                fctString: options.function,\n            }),\n        },\n    };\n}\n//# sourceMappingURL=yFunction.js.map","import { xAdd, xMaxValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMaxY(data, options = {}) {\n    const { max = 1 } = options;\n    const existingMax = xMaxValue(data.y);\n    if (existingMax === max) {\n        return { data };\n    }\n    return {\n        data: {\n            x: data.x,\n            y: xAdd(data.y, max - existingMax),\n        },\n    };\n}\n//# sourceMappingURL=setMaxY.js.map","import { xAdd, xMinValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMinY(data, options = {}) {\n    const { min = 0 } = options;\n    const existingMin = xMinValue(data.y);\n    if (existingMin === min) {\n        return { data };\n    }\n    return {\n        data: {\n            x: data.x,\n            y: xAdd(data.y, min - existingMin),\n        },\n    };\n}\n//# sourceMappingURL=setMinY.js.map","import { xEnsureFloat64, xyGrowingX } from 'ml-spectra-processing';\nimport * as Filters from \"./filters/filters.js\";\n/**\n * Apply filters on {x:[], y:[]}\n * @param data\n * @param filters\n * @returns\n */\nexport function filterXY(data, filters) {\n    let result = {\n        data: xyGrowingX({ x: xEnsureFloat64(data.x), y: xEnsureFloat64(data.y) }),\n    };\n    const logs = [];\n    for (const filter of filters) {\n        const start = Date.now();\n        if (!filter.name) {\n            // we ignore empty filter names\n            continue;\n        }\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        result.data = xyGrowingX(result.data);\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 { filterXY } from 'ml-signal-processing';\nimport { xMinMaxValues, xyCheck } from 'ml-spectra-processing';\n/**\n *\n * @private\n * @param input\n * @param [options={}]\n */\nexport function getNormalized(input, options = {}) {\n    xyCheck(input);\n    let { filters = [] } = options;\n    const { from = input.x[0], to = input.x.at(-1), numberOfPoints = 1024, applyRangeSelectionFirst = false, exclusions = [], } = options;\n    filters = structuredClone(filters);\n    const equallySpacedFilter = {\n        name: 'equallySpaced',\n        options: {\n            from,\n            to,\n            numberOfPoints,\n            exclusions,\n        },\n    };\n    if (applyRangeSelectionFirst) {\n        filters.unshift(equallySpacedFilter);\n    }\n    else {\n        filters.push(equallySpacedFilter);\n    }\n    const output = filterXY(input, filters).data;\n    const allowedBoundary = {\n        x: {\n            min: output.x[0],\n            max: output.x.at(-1),\n        },\n        y: xMinMaxValues(output.y),\n    };\n    return {\n        data: output,\n        allowedBoundary,\n    };\n}\n//# sourceMappingURL=getNormalized.js.map","import { xFindClosestIndex, xyIntegration, xyMaxYPoint, xyMinYPoint, } from 'ml-spectra-processing';\n/**\n * Updates range information for a spectrum\n * @private\n * @param spectrum - The spectrum object to update\n * @param ranges - Array of range objects to process\n */\nexport function updateRangesInfo(spectrum, ranges = []) {\n    spectrum.ranges = {};\n    for (let range of ranges) {\n        range = structuredClone(range);\n        spectrum.ranges[range.label] = range;\n        const fromToIndex = {\n            fromIndex: xFindClosestIndex(spectrum.normalized.x, range.from),\n            toIndex: xFindClosestIndex(spectrum.normalized.x, range.to),\n        };\n        range.deltaX =\n            spectrum.normalized.x[fromToIndex.toIndex] -\n                spectrum.normalized.x[fromToIndex.fromIndex];\n        range.baseline =\n            ((spectrum.normalized.y[fromToIndex.toIndex] +\n                spectrum.normalized.y[fromToIndex.fromIndex]) *\n                range.deltaX) /\n                2;\n        range.integration = xyIntegration(spectrum.normalized, fromToIndex);\n        range.correctedIntegration = range.integration - range.baseline;\n        range.maxPoint = xyMaxYPoint(spectrum.normalized, fromToIndex);\n        range.minPoint = xyMinYPoint(spectrum.normalized, fromToIndex);\n        range.x =\n            spectrum.normalized.x.slice(fromToIndex.fromIndex, fromToIndex.toIndex + 1) || [];\n        range.y =\n            spectrum.normalized.y.slice(fromToIndex.fromIndex, fromToIndex.toIndex + 1) || [];\n    }\n}\n//# sourceMappingURL=updateRangesInfo.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getData } from './getData.js';\nimport { getNormalized } from './getNormalized.js';\nimport { updateRangesInfo } from './updateRangesInfo.js';\n/**\n * Class allowing manipulate one IR spectrum\n * @class spectrum\n * @param x - x values array\n * @param y - y values array\n * @param id - spectrum identifier\n * @param options - initialization options\n */\nexport class Spectrum {\n    x;\n    y;\n    id;\n    meta;\n    normalizedBoundary;\n    normalized;\n    normalizedAllowedBoundary;\n    memory;\n    ranges;\n    /**\n     * Constructor for Spectrum\n     * @param x - x values array\n     * @param y - y values array\n     * @param id - spectrum identifier\n     * @param options - initialization options with meta, normalization, and normalized properties\n     */\n    constructor(x, y, id, options = {}) {\n        const { meta = {}, normalization = {}, normalized } = options;\n        if (x && x.length > 1 && x[0] > x.at(-1)) {\n            this.x = x.toReversed();\n            this.y = y.toReversed();\n        }\n        else {\n            this.x = x || [];\n            this.y = y || [];\n        }\n        this.id = id;\n        this.meta = meta;\n        this.normalizedBoundary = { x: { min: 0, max: 0 }, y: { min: 0, max: 0 } };\n        if (normalized) {\n            this.normalized = normalized;\n            this.updateNormalizedBoundary();\n            this.normalizedAllowedBoundary = this.normalizedBoundary;\n        }\n        else {\n            this.normalized = this.updateNormalization(normalization);\n        }\n        this.updateMemory();\n    }\n    /**\n     * Get the minimum x value\n     */\n    get minX() {\n        return this.x[0];\n    }\n    /**\n     * Get the maximum x value\n     */\n    get maxX() {\n        return this.x.at(-1);\n    }\n    /**\n     * Update memory usage statistics\n     */\n    updateMemory() {\n        const original = (this.x?.length || 0) * 16;\n        const normalizedMem = (this.normalized?.x?.length || 0) * 16;\n        this.memory = {\n            original,\n            normalized: normalizedMem,\n            total: original + normalizedMem,\n        };\n    }\n    /**\n     * Remove original x and y data\n     */\n    removeOriginal() {\n        this.x = undefined;\n        this.y = undefined;\n        this.updateMemory();\n    }\n    /**\n     * Get x and y arrays\n     * @returns Object containing x and y arrays\n     * @throws Error if x or y is not an array\n     */\n    getXY() {\n        if (!Array.isArray(this.x) || !Array.isArray(this.y)) {\n            throw new Error('Can not get normalized data');\n        }\n        return { x: this.x, y: this.y };\n    }\n    /**\n     * Update ranges information\n     * @param ranges - ranges configuration\n     */\n    updateRangesInfo(ranges) {\n        updateRangesInfo(this, ranges);\n    }\n    /**\n     * Update normalization\n     * @param normalization - normalization configuration\n     */\n    updateNormalization(normalization) {\n        const result = getNormalized(this, normalization);\n        this.normalized = result.data;\n        this.normalizedAllowedBoundary = result.allowedBoundary;\n        this.ranges = {};\n        this.updateMemory();\n        this.updateNormalizedBoundary();\n        return result.data;\n    }\n    /**\n     * Get spectrum data with optional filtering and scaling\n     * @param options - options for data retrieval\n     * @returns Data object with x and y arrays\n     */\n    getData(options) {\n        return getData(this, options);\n    }\n    /**\n     * Update normalized boundary values\n     */\n    updateNormalizedBoundary() {\n        this.normalizedBoundary.x = {\n            min: this.normalized.x[0],\n            max: this.normalized.x.at(-1),\n        };\n        this.normalizedBoundary.y = xMinMaxValues(this.normalized.y);\n    }\n}\n//# sourceMappingURL=Spectrum.js.map","import { xFindClosestIndex } from 'ml-spectra-processing';\nimport { getAutocorrelationChart } from './jsgraph/getAutocorrelationChart.js';\nimport { getBoxPlotChart } from './jsgraph/getBoxPlotChart.js';\nimport { getChart } from './jsgraph/getChart.js';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations.js';\nimport { getNormalizedChart } from './jsgraph/getNormalizedChart.js';\nimport { getPostProcessedChart } from './jsgraph/getPostProcessedChart.js';\nimport { getTrackAnnotation } from './jsgraph/getTrackAnnotation.js';\nimport { getCategoriesStats } from './metadata/getCategoriesStats.js';\nimport { getClassLabels } from './metadata/getClassLabels.js';\nimport { getClasses } from './metadata/getClasses.js';\nimport { getMetadata } from './metadata/getMetadata.js';\nimport parseJcamp from './parser/parseJcamp.js';\nimport parseMatrix from './parser/parseMatrix.js';\nimport parseText from './parser/parseText.js';\nimport { getAutocorrelation } from './spectra/getAutocorrelation.js';\nimport { getBoxPlotData } from './spectra/getBoxPlotData.js';\nimport { getMeanData } from './spectra/getMeanData.js';\nimport { getNormalizedData } from './spectra/getNormalizedData.js';\nimport { getNormalizedText } from './spectra/getNormalizedText.js';\nimport { getPostProcessedData } from './spectra/getPostProcessedData.js';\nimport { getPostProcessedText } from './spectra/getPostProcessedText.js';\nimport { Spectrum } from './spectrum/Spectrum.js';\n/**\n * Manager for a large number of spectra with the possibility to normalize the data\n * and skip the original data.\n */\nexport class SpectraProcessor {\n    normalization;\n    maxMemory;\n    keepOriginal;\n    spectra;\n    /**\n     * Create a SpectraProcessor\n     * @param options - Configuration options\n     */\n    constructor(options = {}) {\n        this.normalization = options.normalization;\n        this.maxMemory = options.maxMemory || 256 * 1024 * 1024;\n        this.keepOriginal = true;\n        this.spectra = [];\n    }\n    getNormalizationAnnotations() {\n        return getNormalizationAnnotations(this.normalization);\n    }\n    /**\n     * Recalculate the normalized data using the stored original data if available\n     * This will throw an error if the original data is not present\n     * @param normalization - Normalization options\n     */\n    setNormalization(normalization = {}) {\n        if (JSON.stringify(this.normalization) === JSON.stringify(normalization)) {\n            return;\n        }\n        this.normalization = normalization;\n        for (const spectrum of this.spectra) {\n            spectrum.updateNormalization(this.normalization);\n        }\n    }\n    getNormalization() {\n        return this.normalization;\n    }\n    /**\n     * Returns an object {x:[], y:[]} containing the autocorrelation for the\n     * specified index\n     * @param index - X index of the spectrum to autocorrelate\n     * @param options - Options for autocorrelation\n     * @returns Autocorrelation result\n     */\n    getAutocorrelation(index, options = {}) {\n        const { x } = options;\n        const normalizedData = this.getNormalizedData(options);\n        let actualIndex = index;\n        if (actualIndex === undefined && x !== undefined) {\n            actualIndex = xFindClosestIndex(normalizedData.x, x);\n        }\n        else {\n            actualIndex = 0;\n        }\n        return getAutocorrelation(normalizedData, actualIndex);\n    }\n    /**\n     * Returns a {x:[], y:[]} containing the average of specified spectra\n     * @param options - Options for mean calculation\n     * @returns Mean data\n     */\n    getMeanData(options) {\n        return getMeanData(this.getNormalizedData(options));\n    }\n    /**\n     * Returns an object containing 4 parameters with the normalized data\n     * @param options - Options for normalization\n     * @returns\n     */\n    getNormalizedData(options = {}) {\n        const { ids } = options;\n        const spectra = this.getSpectra(ids);\n        return getNormalizedData(spectra);\n    }\n    /**\n     * Returns a tab separated value containing the normalized data\n     * @param options - Options for export\n     * @returns Text string\n     */\n    getNormalizedText(options = {}) {\n        const { ids } = options;\n        const spectra = this.getSpectra(ids);\n        return getNormalizedText(spectra, options);\n    }\n    /**\n     * Returns a tab separated value containing the post processed data\n     * @param options - Options for export\n     * @returns Text string\n     */\n    getPostProcessedText(options = {}) {\n        return getPostProcessedText(this, options);\n    }\n    getMinMaxX() {\n        let min = Number.MAX_VALUE;\n        let max = Number.MIN_VALUE;\n        for (const spectrum of this.spectra) {\n            if (spectrum.minX < min)\n                min = spectrum.minX;\n            if (spectrum.maxX > max)\n                max = spectrum.maxX;\n        }\n        return { min, max };\n    }\n    /**\n     * Returns an object containing 4 parameters with the scaled data\n     * @param options - Options for post-processing\n     * @returns\n     */\n    getPostProcessedData(options) {\n        return getPostProcessedData(this, options);\n    }\n    /**\n     * Add from text\n     * By default TITLE from the jcamp will be in the meta information\n     * @param text - Text data\n     * @param options - Options for parsing\n     */\n    addFromText(text, options = {}) {\n        if (options.force !== true && options.id && this.contains(options.id)) {\n            return;\n        }\n        const parsed = parseText(text, options);\n        const meta = { ...options.meta };\n        this.addFromData(parsed.data, { meta, id: options.id });\n    }\n    /**\n     * Add jcamp\n     * By default TITLE from the jcamp will be in the meta information\n     * @param jcamp - JCAMP data\n     * @param options - Options for parsing\n     */\n    addFromJcamp(jcamp, options = {}) {\n        if (options.force !== true && options.id && this.contains(options.id)) {\n            return;\n        }\n        const parsed = parseJcamp(jcamp);\n        const meta = { ...parsed.info, ...parsed.meta, ...options.meta };\n        this.addFromData(parsed.data, { meta, id: options.id });\n    }\n    updateRangesInfo(options) {\n        for (const spectrum of this.spectra) {\n            spectrum.updateRangesInfo(options);\n        }\n    }\n    /**\n     * Returns the metadata for a set of spectra\n     * @param options - Options for metadata extraction\n     * @returns Metadata array\n     */\n    getMetadata(options = {}) {\n        const { ids } = options;\n        return getMetadata(this.getSpectra(ids));\n    }\n    /**\n     * Get classes from metadata\n     * @param options - Options for classification\n     * @returns Array of class numbers\n     */\n    getClasses(options) {\n        return getClasses(this.getMetadata(options), options);\n    }\n    /**\n     * Get class labels from metadata\n     * @param options - Options for label extraction\n     * @returns Array of class labels\n     */\n    getClassLabels(options) {\n        return getClassLabels(this.getMetadata(options), options);\n    }\n    /**\n     * Get categories statistics\n     * @param options - Options for statistics\n     * @returns Category statistics\n     */\n    getCategoriesStats(options) {\n        return getCategoriesStats(this.getMetadata(), options);\n    }\n    /**\n     * Add a spectrum based on the data\n     * @param data - {x, y}\n     * @param options - Options for adding spectrum\n     * @returns Spectrum\n     */\n    addFromData(data, options = {}) {\n        if (this.spectra.length === 0)\n            this.keepOriginal = true;\n        const id = options.id || Math.random().toString(36).slice(2, 10);\n        let index = this.getSpectrumIndex(id);\n        if (index === undefined)\n            index = this.spectra.length;\n        const spectrum = new Spectrum(data.x, data.y, id, {\n            meta: options.meta,\n            normalized: options.normalized,\n            normalization: this.normalization,\n        });\n        this.spectra[index] = spectrum;\n        if (!this.keepOriginal) {\n            spectrum.removeOriginal();\n        }\n        else {\n            const memoryInfo = this.getMemoryInfo();\n            if (memoryInfo.total > this.maxMemory) {\n                this.keepOriginal = false;\n                this.removeOriginals();\n            }\n        }\n    }\n    removeOriginals() {\n        for (const spectrum of this.spectra) {\n            spectrum.removeOriginal();\n        }\n    }\n    /**\n     * Remove the spectrum from the SpectraProcessor for the specified id\n     * @param id - Spectrum identifier\n     * @returns Removed spectrum array\n     */\n    removeSpectrum(id) {\n        const index = this.getSpectrumIndex(id);\n        if (index === undefined)\n            return undefined;\n        return this.spectra.splice(index, 1);\n    }\n    /**\n     * Remove all the spectra not present in the list\n     * @param ids - Array of ids of the spectra to keep\n     */\n    removeSpectraNotIn(ids) {\n        const currentIDs = this.spectra.map((spectrum) => spectrum.id);\n        for (const id of currentIDs) {\n            if (!ids.includes(id)) {\n                this.removeSpectrum(id);\n            }\n        }\n    }\n    /**\n     * Checks if the ID of a spectrum exists in the SpectraProcessor\n     * @param id - Spectrum identifier\n     * @returns True if spectrum exists\n     */\n    contains(id) {\n        return this.getSpectrumIndex(id) !== undefined;\n    }\n    /**\n     * Returns the index of the spectrum in the spectra array\n     * @param id - Spectrum identifier\n     * @returns Index or undefined\n     */\n    getSpectrumIndex(id) {\n        if (!id)\n            return undefined;\n        for (let i = 0; i < this.spectra.length; i++) {\n            const spectrum = this.spectra[i];\n            if (spectrum.id === id)\n                return i;\n        }\n        return undefined;\n    }\n    /**\n     * Returns an array of all the ids\n     * @returns Array of IDs\n     */\n    getIDs() {\n        return this.spectra.map((spectrum) => spectrum.id);\n    }\n    /**\n     * Returns an array of spectrum from their ids\n     * @param ids - Array of spectrum IDs\n     * @returns Array of Spectrum\n     */\n    getSpectra(ids) {\n        if (!ids || !Array.isArray(ids))\n            return this.spectra;\n        const spectra = [];\n        for (const id of ids) {\n            const index = this.getSpectrumIndex(id);\n            if (index !== undefined) {\n                spectra.push(this.spectra[index]);\n            }\n        }\n        return spectra;\n    }\n    /**\n     * Returns the spectrum for the given id\n     * @param id - Spectrum identifier\n     * @returns Spectrum or undefined\n     */\n    getSpectrum(id) {\n        const index = this.getSpectrumIndex(id);\n        if (index === undefined)\n            return undefined;\n        return this.spectra[index];\n    }\n    /**\n     * Returns a JSGraph chart object for all the spectra\n     * @param options - Chart options\n     * @returns Chart object\n     */\n    getChart(options) {\n        return getChart(this.spectra, options);\n    }\n    /**\n     * Returns a JSGraph chart object for autocorrelation\n     * @param index - Index in spectrum\n     * @param options - Chart options\n     * @returns Chart object\n     */\n    getAutocorrelationChart(index, options) {\n        return getAutocorrelationChart(this, index, options);\n    }\n    /**\n     * Returns a JSGraph annotation object for the specified index\n     * @param index - Index in spectrum\n     * @param options - Annotation options\n     * @returns Annotation object\n     */\n    getTrackAnnotation(index, options) {\n        return getTrackAnnotation(this.spectra, index, options);\n    }\n    /**\n     * Returns a JSGraph annotation object for box plot\n     * @param options - Chart options\n     * @returns Chart object\n     */\n    getBoxPlotChart(options = {}) {\n        const normalizedData = this.getNormalizedData(options);\n        return getBoxPlotChart(normalizedData, options);\n    }\n    /**\n     * Returns boxplot information\n     * @param options - Options for box plot\n     * @returns Box plot data\n     */\n    getBoxPlotData(options = {}) {\n        const normalizedData = this.getNormalizedData(options);\n        return getBoxPlotData(normalizedData);\n    }\n    /**\n     * Returns a JSGraph chart object for all the normalized spectra\n     * @param options - Chart options\n     * @returns Chart object\n     */\n    getNormalizedChart(options = {}) {\n        const { ids, ...chartOptions } = options;\n        const spectra = this.getSpectra(ids);\n        return getNormalizedChart(spectra, chartOptions);\n    }\n    /**\n     * Returns a JSGraph chart object for all the scaled normalized spectra\n     * @param options - Options for post-processing\n     * @returns Chart object\n     */\n    getPostProcessedChart(options) {\n        return getPostProcessedChart(this, options);\n    }\n    getMemoryInfo() {\n        const memoryInfo = { original: 0, normalized: 0, total: 0 };\n        for (const spectrum of this.spectra) {\n            const memory = spectrum.memory;\n            if (memory) {\n                memoryInfo.original += memory.original;\n                memoryInfo.normalized += memory.normalized;\n                memoryInfo.total += memory.total;\n            }\n        }\n        return {\n            ...memoryInfo,\n            keepOriginal: this.keepOriginal,\n            maxMemory: this.maxMemory,\n        };\n    }\n    getNormalizedBoundary() {\n        const boundary = {\n            x: { min: Number.MAX_VALUE, max: Number.MIN_VALUE },\n            y: { min: Number.MAX_VALUE, max: Number.MIN_VALUE },\n        };\n        for (const spectrum of this.spectra) {\n            if (spectrum.normalizedBoundary.x.min < boundary.x.min) {\n                boundary.x.min = spectrum.normalizedBoundary.x.min;\n            }\n            if (spectrum.normalizedBoundary.x.max > boundary.x.max) {\n                boundary.x.max = spectrum.normalizedBoundary.x.max;\n            }\n            if (spectrum.normalizedBoundary.y.min < boundary.y.min) {\n                boundary.y.min = spectrum.normalizedBoundary.y.min;\n            }\n            if (spectrum.normalizedBoundary.y.max > boundary.y.max) {\n                boundary.y.max = spectrum.normalizedBoundary.y.max;\n            }\n        }\n        return boundary;\n    }\n    /**\n     * We provide the allowed from / to after normalization\n     * For the X axis we return the smallest common values\n     * For the Y axis we return the largest min / max\n     */\n    getNormalizedCommonBoundary() {\n        const boundary = {\n            x: { min: Number.NEGATIVE_INFINITY, max: Number.POSITIVE_INFINITY },\n            y: { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY },\n        };\n        for (const spectrum of this.spectra) {\n            if (spectrum.normalizedAllowedBoundary) {\n                if (spectrum.normalizedAllowedBoundary.x.min > boundary.x.min) {\n                    boundary.x.min = spectrum.normalizedAllowedBoundary.x.min;\n                }\n                if (spectrum.normalizedAllowedBoundary.x.max < boundary.x.max) {\n                    boundary.x.max = spectrum.normalizedAllowedBoundary.x.max;\n                }\n                if (spectrum.normalizedAllowedBoundary.y.min < boundary.y.min) {\n                    boundary.y.min = spectrum.normalizedAllowedBoundary.y.min;\n                }\n                if (spectrum.normalizedAllowedBoundary.y.max > boundary.y.max) {\n                    boundary.y.max = spectrum.normalizedAllowedBoundary.y.max;\n                }\n            }\n        }\n        return boundary;\n    }\n    /**\n     * Create SpectraProcessor from normalized TSV\n     * @param text - TSV text\n     * @param options - Parsing options\n     * @param options.fs\n     * @returns SpectraProcessor instance\n     */\n    static fromNormalizedMatrix(text, options = {}) {\n        const parsed = parseMatrix(text, options);\n        if (!parsed) {\n            throw new Error('Can not parse TSV file');\n        }\n        const spectraProcessor = new SpectraProcessor();\n        spectraProcessor.setNormalization({\n            from: parsed.x[0],\n            to: parsed.x.at(-1),\n            numberOfPoints: parsed.x.length,\n        });\n        for (let i = 0; i < parsed.ids.length; i++) {\n            spectraProcessor.addFromData({ x: [], y: [] }, {\n                normalized: {\n                    x: parsed.x,\n                    y: parsed.matrix[i],\n                },\n                id: parsed.ids[i],\n                meta: parsed.meta[i],\n            });\n        }\n        spectraProcessor.keepOriginal = false;\n        return spectraProcessor;\n    }\n}\n//# sourceMappingURL=SpectraProcessor.js.map","/**\n * Get filter annotations\n * @param filter - Filter with from, to, and exclusions\n * @returns Array of rectangle annotations\n */\nexport function getFilterAnnotations(filter = {}) {\n    let { exclusions = [] } = filter;\n    let annotations = [];\n    exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n    annotations = exclusions.map((exclusion) => {\n        const annotation = {\n            type: 'rect',\n            position: [\n                { x: exclusion.from, y: '0px' },\n                { x: exclusion.to, y: '2000px' },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,128,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: '0px' },\n                { x: filter.from, y: '2000px' },\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: '0px' },\n                { x: Number.MAX_SAFE_INTEGER, y: '2000px' },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    return annotations;\n}\n//# sourceMappingURL=getFilterAnnotations.js.map"],"names":["toString","Object","prototype","isAnyArray","value","tag","call","endsWith","includes","getOutputArray","output","length","undefined","TypeError","Float64Array","xMedian","input","options","exact","array","slice","middleIndex","calcMiddle","median","quickSelect","medianNext","low","high","middle","currentLow","currentHigh","swap","i","j","temp","Math","floor","xCheck","minLength","Error","xFindClosestIndex","target","sorted","abs","index","diff","Number","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","from","to","xAbsoluteSum","sum","xAdd","array1","array2","isConstant","constant","array3","xApplyFunctionStr","variableLabel","fctString","fct","Function","replaceAll","toReturn","isNaN","xMultiply","xCorrelation","A","B","n","sumA","sumA2","sumB","sumB2","sumAB","a","b","sqrt","max","arguments","_options$fromIndex","_options$toIndex","isInteger","maxValue","min","minValue","rescale","Array","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","defineProperty","matrix","require$$0","require$$1","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","constructor","name","inspectData","rows","columns","maxI","maxJ","result","loop","get","line","push","formatNumber","join","num","formatNumber2","padEnd","len","str","fix","toFixed","startsWith","exp","toExponential","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","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","expm1","fround","log","log1p","log10","log2","round","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","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","data","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isDistance","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","dot","cumulativeSum","vector2","vector1","mmul","other","Bcolj","s","mpow","scalar","bb","e","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","y","r1","c1","r2","c2","console","warn","embed","mat","r","c","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","entries","product","standardDeviation","center","Symbol","iterator","col","values","for","isArrayOfNumbers","every","element","randomInt","diagonal","identity","negate","tensorProduct","#initData","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","SymmetricMatrix","diagonalSize","isSymmetricMatrix","klassType","upperRightEntries","toMatrix","removeCross","addCross","applyMask","mask","sidesToRemove","passthroughs","reverse","sideIndex","toCompact","compact","fromCompact","compactSize","JSON","stringify","upperRightValues","DistanceMatrix","isDistanceMatrix","klassSubType","sideSize","toSymmetricMatrix","compactLength","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","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","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","g","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","d","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","svd","pseudoInverse","svdSolution","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","tred2","tql2","H","ort","orthes","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","hh","dl1","c3","el1","s2","tst1","nn","exshift","z","iter","w","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","L","isPositiveDefinite","nipals","scaleScores","maxIterations","terminationCriteria","u","tOld","counter","xResidual","residual","yResidual","betas","CHO","EVD","Matrix_1","MatrixTransposeView_1","NIPALS","Nipals","SVD","_default","default","solve_1","xMean","sumValue","xVariance","sqrError","xStandardDeviation","xEnsureFloat64","FFT","_csize","table","angle","PI","power","_width","_bitrev","revShift","_out","_data","_inv","fromComplexArray","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","_transform4","realTransform","_realTransform4","inverseTransform","width","step","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","C","D","Ar","Ai","Br","Bi","Cr","Ci","Dr","Di","MAr","MAi","tableBr","tableBi","MBr","MBi","tableCr","tableCi","MCr","MCi","tableDr","tableDi","MDr","MDi","T0r","T0i","T1r","T1i","T2r","T2i","T3r","T3i","FAr","FAi","FCr","FCi","FBr","FBi","FDr","FDi","evenR","evenI","oddR","oddI","leftR","leftI","rightR","rightI","step2","step3","_singleRealTransform2","_singleRealTransform4","halfLen","hquarterLen","ST0r","ST0i","ST1r","ST1i","ST2r","ST2i","ST3r","ST3i","SFAr","SFAi","SFBr","SFBi","SA","SB","createNumberArray","ArrayConstructor","createFromToArray","includeFrom","includeTo","distribution","delta","base","firstExponent","xSubtract","xMaxValue","xMinValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","at","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","val","simpleNormInv","magnitudeMode","SQRT2","simpleNormInvNumber","xNoiseSanPlot","cutOff","refine","scaleFactor","factorStd","fixOffset","prepareData","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","filter","averageValue","kiSqrt","logBaseY","key","logOfBase","xAxis","_e","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","String","xPadding","fromEnd","toEnd","xParetoNormalization","sqrtSD","xRescale","xRolling","window","padding","padded","subarray","xRollingAverage","xRollingMedian","matrixCreateEmpty","nbRows","nbColumns","matrixAutoCorrelation","targetArray","sourceArray","matrixBoxPlot","info","q1","q3","columnArray","q1max","q3min","middleOver","matrixCenterZMean","matrixCheck","firstLength","matrixMinMaxZ","matrixPQN","matrixB","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","matrixZRescale","xyCheck","xyMaxYPoint","current","xyEnsureGrowingX","prevX","currentIndex","zonesNormalize","zones","exclusions","map","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","zoneIndex","zonesWithPoints","numberOfPoints","normalizedZones","zonesWithNumberOfPoints","totalSize","reduce","previous","unitsPerPoint","currentTotal","tempZone","tempZoneNumberOfPoints","equallySpacedSlot","xLength","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","xyEquallySpaced","variant","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyGrowingX","toReversed","xyIntegration","currentxyIntegration","xyMinYPoint","xySortX","floatX","floatY","xyObject","response","xyUniqueX","isSorted","average","cumulativeY","rgb","_clipped","_unclipped","classToType","toLowerCase","obj","args","keyOrder","split","rnd2","rnd3","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","reverse3","arr","format","autodetect","Color","me","mode","_input","chk","test","_rgb","clip_rgb","hex","version","chroma","w3cx11","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","purple2","purple3","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","RE_HEX","RE_HEXA","hex2rgb","match","substr","rgb2hex","unpack","hxa","keys","named","rest","mutate","clipped","labConstants","Kn","labWhitePoint","Xn","Yn","Zn","t0","kE","kKE","kK","RefWhiteRGB","Z","MtxRGB2XYZ","m00","m01","m02","MtxXYZ2RGB","As","Bs","Cs","MtxAdaptMa","MtxAdaptMaI","ILLUMINANTS","Map","setLabWhitePoint","ill","getLabWhitePoint","lab2rgb","lab2xyz","b_","xyz2rgb","LAB_CONSTANTS","fy","fx","fz","fx3","fz3","zr","compand","linear","Ad","Bd","Cd","X1","Z1","X2","Z2","rgb2lab","rgb2xyz","xyz2lab","gammaAdjustSRGB","companded","lab","assign","darken","amount","brighten","darker","brighter","mc","channel","src","indexOf","EPS","MAX_ITER","luminance","lum","cur_lum","max_iter","mid","interpolate","lm","rgb2luminance","luminance_x","col1","col2","interpolator","mix","premultiply","lch2lab","lch2rgb","hcl2rgb","hcl","atan2","lab2lch","rgb2lch","lch","forEach","saturate","desaturate","charAt","tint","shade","xyz0","xyz1","lrgb","z1","x2","y2","z2","hsl","hsv","hcg","hsi","oklch","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","dh","interpolate_hsx","num2rgb","rgb2num","hcg2rgb","_g","_c","rgb2hcg","minRgb","maxRgb","hsi2rgb","rgb2hsi","min_","hsl2rgb","t3","t2","t1","h_","rgb2hsl","hsv2rgb","max_","rgb2hsv","multiplyMatrices","isArray","B_cols","_","oklab2rgb","OKLab_to_XYZ","OKLab","LMStoXYZ","OKLabtoLMS","LMSnl","rgb2oklab","xyz","oklab","XYZ_to_OKLab","XYZ","XYZtoLMS","LMStoOKLab","LMS","colors","weights","_average_lrgb","cnt","dx","dy","ci","xyz2","_mode","_nacol","_spread","_positions","_domain","_pos","_padding","_classes","_colors","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","resetCache","getClass","tMapLightness","tMapDomain","getColor","bypassMap","classes","analyze","limits","domain","tOut","tBreaks","_m","_o","spread","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","numColors","dm","dd","__range__","samples","end","asc","cache","gamma","nodata","left","right","inclusive","ascending","binom_row","newrow","bezier","I","lab0","lab1","lab2","lab3","labs","el","rnd","rgba","blend","bottom","blend_f","c0","each","normal","lighten","screen","overlay","burn","dodge","rotations","lightness","dl","fract","amp","cos_a","sin_a","digits","rng","code","min_log","LOG10E","max_log","pb","pr","cluster","assignments","clusterSizes","nb_iters","centroids","mindist","best","dist","newCentroids","kClusters","tmpKMeansBreaks","l1","l2","W_offset","P_in","P_out","R_scale","B_threshold","B_exp","text","bg","l_text","l_bg","Y_text","Y_bg","S_norm","S_rev","S_apc","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","C1","C2","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rc","Rt","sum_sq","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","colorbrewerTypes","typeMap","colorbrewerProxy","Proxy","prop","lower","has","getOwnPropertyNames","cmyk2rgb","rgb2cmyk","cmyk","hsl2css","hsla","lab2css","laba","lch2css","lcha","oklab2css","rgb2oklch","oklch2css","rgb2css","prevWhitePoint","cssColor","oklch2rgb","INT_OR_PCT","source","FLOAT_OR_PCT","PCT","RE_S","SEP","COMMA","ANLGE","ALPHA","RE_RGB","RegExp","RE_RGB_LEGACY","RE_RGBA_LEGACY","RE_HSL","RE_HSL_LEGACY","RE_HSLA_LEGACY","RE_LAB","RE_LCH","RE_OKLAB","RE_OKLCH","roundRGB","percentToAbsolute","pct","signed","parseFloat","substring","noneToValue","noneValue","css2rgb","css","trim","replace","wp","gl","temperature2rgb","kelvin","rgb2temperature","minTemp","maxTemp","temperature","contrast","contrastAPCA","cubehelix","deltaE","distance","scales","valid","getAutocorrelationChart","spectraProcessor","autocorrelation","getAutocorrelation","xFilter","ids","colorCallback","ys","ArrayBuffer","isView","colorScale","getMeanData","colorSpectrum","color","styles","unselected","lineWidth","lineStyle","selected","getBoxPlotData","normalizedData","getBoxPlotChart","q13FillColor","q13FillOpacity","medianStrokeColor","medianStrokeWidth","minMaxFillColor","minMaxFillOpacity","annotations","boxPlotData","q13","layer","properties","fillColor","fillOpacity","strokeWidth","minMax","strokeColor","getColors","dataset","stdevs","addChartDataStyle","lineColor","meta","label","id","getChart","spectra","yFactor","chart","getData","getNormalizationAnnotations","exclusion","ignore","annotation","getNormalizedChart","normalized","getPostProcessedChart","scaled","getPostProcessedData","getNormalizedData","currentIDs","getTrackAnnotation","showSpectrumID","sortY","toPrecision","peaks","getCategoriesStats","metadata","propertyName","categories","classNumber","metadatum","getClassLabels","getClasses","categoriesStats","getMetadata","isUtf8","buf","ensureString","blob","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","buffer","byteOffset","byteLength","isutf8","parseString","lowercase","number","gyromagneticRatioMHzT","getGyromagneticNucleus","nucleus","gyromagneticRatio","nucleusNumber","filteredNuclei","getGyromagneticRatio","realNucleus","fromEntries","_ref","module","exports","quickSelectMedian","$","E","exec","o","te","ne","times","series","ms","pageValue","chromatogram","re","O","logger","xFactor","deltaX","isXYdata","firstX","firstY","codePointAt","S","N","F","M","oe","isPeaktable","variables","ce","ue","isXYAdata","se","lastY","pe","ae","minX","maxX","minY","maxY","minZ","maxZ","noise","ntuples","symbol","units","toUpperCase","find","some","ie","nbContourLevels","fe","noiseMultiplier","zValue","lines","ee","segments","noContour","contourLines","observeFrequency","shiftOffsetVal","xUnits","lastX","$NUC2","$NUC1","yType","xType","W","pageSymbol","J","intensity","de","twoD","wantXY","profiling","keepSpectra","dynamicTyping","le","K","vardim","nbPoints","varname","yUnits","R","he","removeComments","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","withoutXY","noTrimRegExp","pt","ge","debug","Date","now","flatten","children","datatable","title","dataType","dataClass","jcampDX","jcampCS","shiftOffsetNum","vartype","varform","page","sampleDescription","pop","be","getJcampKind","IR_ABSORBANCE","IR_TRANSMITTANCE","normalization","importation","converter","transmittance","kind","display","xLabel","xInverted","yLabel","parseJcamp","jcampText","parsed","convert","parseMatrix","fs","currentMatrix","headers","labels","header","parts","oneMeta","parse","uniqueX","bestGuess","keepInfo","xColumn","yColumn","numberColumns","maxNumberColumns","minNumberColumns","fields","skipFirstColumn","xs","parseXY","parseText","parserOptions","convertToText","rs","allKeysObject","metum","allKeys","removeSpecialCharacters","getNormalizedText","require","createHash","write","update","dispatch","digest","read","sha1","excludeValues","MD5","keysMD5","getHashes","ignoreUnknown","respectType","respectFunctionNames","respectFunctionProperties","unorderedArrays","unorderedSets","unorderedObjects","replacer","excludeKeys","_object","isBuffer","_array","_date","_symbol","_error","_boolean","_string","_function","_number","_xml","_null","_undefined","_regexp","_uint8array","_uint8clampedarray","_int8array","_uint16array","_int16array","_uint32array","_int32array","_float32array","_float64array","_arraybuffer","_url","_map","_set","_file","lastModfied","_blob","_domwindow","_bigint","_process","_timer","_pipe","_tcp","_udp","_tty","_statwatcher","_securecontext","_connection","_zlib","_context","_nodescript","_httpparser","_dataview","_signal","_fsevent","_tlswrap","writeToStream","self","Buffer","crypto","lYpoI2","charCodeAt","toByteArray","fromByteArray","base64js","_useTypedArrays","_augment","_isBuffer","readUInt8","_charsWritten","fromCharCode","SlowBuffer","INSPECT_MAX_BYTES","poolSize","foo","isEncoding","_arr","writeUInt8","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","inspect","toArrayBuffer","encodeURIComponent","decodeURIComponent","_get","toLocaleString","ieee754","hash","sha256","md5","createHmac","randomBytes","LN2","nextTick","setImmediate","postMessage","addEventListener","stopPropagation","setTimeout","browser","env","argv","on","addListener","once","removeListener","removeAllListeners","emit","binding","cwd","chdir","integration","normalizedTarget","fromToIndex","targetValue","deltaTarget","minTarget","deltaSource","minSource","optionsHash","ranges","calculations","filters","targetID","relative","method","getSpectra","validCache","weakMap","WeakMap","getSpectrum","rangesCopy","structuredClone","yNormalized","resultRanges","currentRange","maxPoint","parameters","calculation","formula","oneRanges","getPostProcessedText","postProcessing","postProcessingOptions","centerMean","centerMedian","normed","divideBySD","paretoNormalization","ldlSymbolic","Ap","Lp","Parent","Lnz","Flag","kk","p2","ldlNumeric","Ax","Li","Lx","Pattern","lKi","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPerm","ldlPermt","prepare","Pinv","Mt","ar","ac","LNZ","coloffset","adr","bp1","cuthillMckee_1","cuthillMckee","compareNum","list","adj","visited","toVisit","eol","ptr","nbhd","getClosestNumber","goal","closest","prev","curr","getCloseIndex","updateSystem","newVector","next","getDeltaMatrix","lambda","lowerTriangularNonZeros","permutationEncodedArray","getControlPoints","controlPoints","Int8Array","indexFrom","indexTo","airPLS","baseline","iteration","sumNegDifferences","corrected","stopCriterion","getStopCriterion","prevNegSum","cho","cholesky","applyCorrection","absChange","_typeof","sequentialFill","_options","_options$from","_options$to","_options$size","_i","airPLSBaseline","numberPoints","regressionOptions","airpls","correctedSpectrum","checkArrayLength","BaseRegression","new","predict","_predict","xVal","train","precision","toLaTeX","score","ySum","chi2","rmsd","xSquared","ySquared","xY","maybeToPrecision","figures","PolynomialRegression","degree","powers","coefficients","regress","_toFormula","isLaTeX","sup","closeSup","fn","load","json","interceptAtZero","nCoefficients","FT","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","rollingAverageBaseline","defaults","actualOptions","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","windowSize","derivative","polynomial","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","gramPoly","Grampoly","genFact","gf","weight","firstDerivative","secondDerivative","thirdDerivative","savitzkyGolay","ensureGrowing","reverseIfNeeded","equallySpaced","filterX","setMaxX","existingMax","setMinX","existingMin","getMinMaxIntervalsDy","dY","dX","lastMax","lastMin","intervalL","intervalR","tryMatchOneIntervalWithMinData","lastK","minData","yThreshold","intervalWidth","intervalCenter","yData","minDistance","possible","newLastIndex","centerIndex","currentDistance","lastIndex","autoAlgorithm","ddY","minddY","crossDy","lastJ","yIndex","randomUUID","inflectionPoints","getPeakFromIntervals","xGetCrossZeroPoints","isLessAndGreaterThanZero","back","optimizeTop","peak","beta","xCurrent","xPrevious","gsd","noiseLevel","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","peakDetectionAlgorithm","isEquallySpaced","noiseInfo","xValue","peakData","calibrateX","targetX","nbPeaks","gsdOptions","xFunction","function","yFunction","setMaxY","setMinY","filterXY","logs","filterFct","Filters","time","getNormalized","applyRangeSelectionFirst","equallySpacedFilter","unshift","allowedBoundary","updateRangesInfo","correctedIntegration","minPoint","Spectrum","normalizedBoundary","normalizedAllowedBoundary","memory","updateNormalizedBoundary","updateNormalization","updateMemory","original","normalizedMem","total","removeOriginal","getXY","SpectraProcessor","maxMemory","keepOriginal","setNormalization","getNormalization","actualIndex","getMinMaxX","addFromText","force","contains","addFromData","addFromJcamp","jcamp","getSpectrumIndex","memoryInfo","getMemoryInfo","removeOriginals","removeSpectrum","removeSpectraNotIn","getIDs","chartOptions","getNormalizedBoundary","boundary","getNormalizedCommonBoundary","fromNormalizedMatrix","getFilterAnnotations"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,181,182,183,184,185,186,187,188,189,190,194,195,201,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262]}