Hacked By AnonymousFox

Current Path : C:/AppServ/www/financial/stacked/code/modules/
Upload File :
Current File : C:/AppServ/www/financial/stacked/code/modules/venn.js.map

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/venn\n * @requires highcharts\n *\n * (c) 2017-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SeriesRegistry\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/venn\", [\"highcharts/highcharts\"], function (amd1) {return factory(amd1,amd1[\"Color\"],amd1[\"SeriesRegistry\"]);});\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/venn\"] = factory(root[\"_Highcharts\"], root[\"_Highcharts\"][\"Color\"], root[\"_Highcharts\"][\"SeriesRegistry\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"]);\n})(typeof window === 'undefined' ? this : window, (__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 512:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": () => (/* binding */ venn_src)\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n;// ./code/es-modules/Core/Geometry/GeometryUtilities.js\n/* *\n *\n *  (c) 2010-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Namespace\n *\n * */\nvar GeometryUtilities;\n(function (GeometryUtilities) {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Calculates the center between a list of points.\n     *\n     * @private\n     *\n     * @param {Array<Highcharts.PositionObject>} points\n     * A list of points to calculate the center of.\n     *\n     * @return {Highcharts.PositionObject}\n     * Calculated center\n     */\n    function getCenterOfPoints(points) {\n        const sum = points.reduce((sum, point) => {\n            sum.x += point.x;\n            sum.y += point.y;\n            return sum;\n        }, { x: 0, y: 0 });\n        return {\n            x: sum.x / points.length,\n            y: sum.y / points.length\n        };\n    }\n    GeometryUtilities.getCenterOfPoints = getCenterOfPoints;\n    /**\n     * Calculates the distance between two points based on their x and y\n     * coordinates.\n     *\n     * @private\n     *\n     * @param {Highcharts.PositionObject} p1\n     * The x and y coordinates of the first point.\n     *\n     * @param {Highcharts.PositionObject} p2\n     * The x and y coordinates of the second point.\n     *\n     * @return {number}\n     * Returns the distance between the points.\n     */\n    function getDistanceBetweenPoints(p1, p2) {\n        return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n    }\n    GeometryUtilities.getDistanceBetweenPoints = getDistanceBetweenPoints;\n    /**\n     * Calculates the angle between two points.\n     * @todo add unit tests.\n     * @private\n     * @param {Highcharts.PositionObject} p1 The first point.\n     * @param {Highcharts.PositionObject} p2 The second point.\n     * @return {number} Returns the angle in radians.\n     */\n    function getAngleBetweenPoints(p1, p2) {\n        return Math.atan2(p2.x - p1.x, p2.y - p1.y);\n    }\n    GeometryUtilities.getAngleBetweenPoints = getAngleBetweenPoints;\n    /**\n     * Test for point in polygon. Polygon defined as array of [x,y] points.\n     * @private\n     * @param {PositionObject} point The point potentially within a polygon.\n     * @param {Array<Array<number>>} polygon The polygon potentially containing the point.\n     */\n    function pointInPolygon({ x, y }, polygon) {\n        const len = polygon.length;\n        let i, j, inside = false;\n        for (i = 0, j = len - 1; i < len; j = i++) {\n            const [x1, y1] = polygon[i], [x2, y2] = polygon[j];\n            if (y1 > y !== y2 > y &&\n                (x < (x2 - x1) *\n                    (y - y1) /\n                    (y2 - y1) +\n                    x1)) {\n                inside = !inside;\n            }\n        }\n        return inside;\n    }\n    GeometryUtilities.pointInPolygon = pointInPolygon;\n})(GeometryUtilities || (GeometryUtilities = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Geometry_GeometryUtilities = (GeometryUtilities);\n\n;// ./code/es-modules/Core/Geometry/CircleUtilities.js\n/* *\n *\n *  (c) 2010-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { getAngleBetweenPoints, getCenterOfPoints, getDistanceBetweenPoints } = Geometry_GeometryUtilities;\n/* *\n *\n *  Namespace\n *\n * */\nvar CircleUtilities;\n(function (CircleUtilities) {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     *\n     * @param {number} x\n     * Number to round\n     *\n     * @param {number} decimals\n     * Number of decimals to round to\n     *\n     * @return {number}\n     * Rounded number\n     */\n    function round(x, decimals) {\n        const a = Math.pow(10, decimals);\n        return Math.round(x * a) / a;\n    }\n    CircleUtilities.round = round;\n    /**\n     * Calculates the area of a circle based on its radius.\n     *\n     * @private\n     *\n     * @param {number} r\n     * The radius of the circle.\n     *\n     * @return {number}\n     * Returns the area of the circle.\n     */\n    function getAreaOfCircle(r) {\n        if (r <= 0) {\n            throw new Error('radius of circle must be a positive number.');\n        }\n        return Math.PI * r * r;\n    }\n    CircleUtilities.getAreaOfCircle = getAreaOfCircle;\n    /**\n     * Calculates the area of a circular segment based on the radius of the\n     * circle and the height of the segment.\n     *\n     * @see http://mathworld.wolfram.com/CircularSegment.html\n     *\n     * @private\n     *\n     * @param {number} r\n     * The radius of the circle.\n     *\n     * @param {number} h\n     * The height of the circular segment.\n     *\n     * @return {number}\n     * Returns the area of the circular segment.\n     */\n    function getCircularSegmentArea(r, h) {\n        return (r * r * Math.acos(1 - h / r) -\n            (r - h) * Math.sqrt(h * (2 * r - h)));\n    }\n    CircleUtilities.getCircularSegmentArea = getCircularSegmentArea;\n    /**\n     * Calculates the area of overlap between two circles based on their\n     * radiuses and the distance between them.\n     *\n     * @see http://mathworld.wolfram.com/Circle-CircleIntersection.html\n     *\n     * @private\n     *\n     * @param {number} r1\n     * Radius of the first circle.\n     *\n     * @param {number} r2\n     * Radius of the second circle.\n     *\n     * @param {number} d\n     * The distance between the two circles.\n     *\n     * @return {number}\n     * Returns the area of overlap between the two circles.\n     */\n    function getOverlapBetweenCircles(r1, r2, d) {\n        let overlap = 0;\n        // If the distance is larger than the sum of the radiuses then the\n        // circles does not overlap.\n        if (d < r1 + r2) {\n            if (d <= Math.abs(r2 - r1)) {\n                // If the circles are completely overlapping, then the overlap\n                // equals the area of the smallest circle.\n                overlap = getAreaOfCircle(r1 < r2 ? r1 : r2);\n            }\n            else {\n                // Height of first triangle segment.\n                const d1 = (r1 * r1 - r2 * r2 + d * d) / (2 * d), \n                // Height of second triangle segment.\n                d2 = d - d1;\n                overlap = (getCircularSegmentArea(r1, r1 - d1) +\n                    getCircularSegmentArea(r2, r2 - d2));\n            }\n            // Round the result to two decimals.\n            overlap = round(overlap, 14);\n        }\n        return overlap;\n    }\n    CircleUtilities.getOverlapBetweenCircles = getOverlapBetweenCircles;\n    /**\n     * Calculates the intersection points of two circles.\n     *\n     * NOTE: does not handle floating errors well.\n     *\n     * @private\n     *\n     * @param {Highcharts.CircleObject} c1\n     * The first circle.\n     *\n     * @param {Highcharts.CircleObject} c2\n     * The second circle.\n     *\n     * @return {Array<Highcharts.PositionObject>}\n     * Returns the resulting intersection points.\n     */\n    function getCircleCircleIntersection(c1, c2) {\n        const d = getDistanceBetweenPoints(c1, c2), r1 = c1.r, r2 = c2.r;\n        let points = [];\n        if (d < r1 + r2 && d > Math.abs(r1 - r2)) {\n            // If the circles are overlapping, but not completely overlapping,\n            // then it exists intersecting points.\n            const r1Square = r1 * r1, r2Square = r2 * r2, \n            // `d^2 - r^2 + R^2 / 2d`\n            x = (r1Square - r2Square + d * d) / (2 * d), \n            // `y^2 = R^2 - x^2`\n            y = Math.sqrt(r1Square - x * x), x1 = c1.x, x2 = c2.x, y1 = c1.y, y2 = c2.y, x0 = x1 + x * (x2 - x1) / d, y0 = y1 + x * (y2 - y1) / d, rx = -(y2 - y1) * (y / d), ry = -(x2 - x1) * (y / d);\n            points = [\n                { x: round(x0 + rx, 14), y: round(y0 - ry, 14) },\n                { x: round(x0 - rx, 14), y: round(y0 + ry, 14) }\n            ];\n        }\n        return points;\n    }\n    CircleUtilities.getCircleCircleIntersection = getCircleCircleIntersection;\n    /**\n     * Calculates all the intersection points for between a list of circles.\n     *\n     * @private\n     *\n     * @param {Array<Highcharts.CircleObject>} circles\n     * The circles to calculate the points from.\n     *\n     * @return {Array<Highcharts.GeometryObject>}\n     * Returns a list of intersection points.\n     */\n    function getCirclesIntersectionPoints(circles) {\n        return circles.reduce((points, c1, i, arr) => {\n            const additional = arr\n                .slice(i + 1)\n                .reduce((points, c2, j) => {\n                const indexes = [i, j + i + 1];\n                return points.concat(getCircleCircleIntersection(c1, c2).map((p) => {\n                    p.indexes = indexes;\n                    return p;\n                }));\n            }, []);\n            return points.concat(additional);\n        }, []);\n    }\n    CircleUtilities.getCirclesIntersectionPoints = getCirclesIntersectionPoints;\n    /**\n     * Tests whether the first circle is completely overlapping the second\n     * circle.\n     *\n     * @private\n     *\n     * @param {Highcharts.CircleObject} circle1\n     * The first circle.\n     *\n     * @param {Highcharts.CircleObject} circle2\n     * The second circle.\n     *\n     * @return {boolean}\n     * Returns true if circle1 is completely overlapping circle2, false if not.\n     */\n    function isCircle1CompletelyOverlappingCircle2(circle1, circle2) {\n        return getDistanceBetweenPoints(circle1, circle2) + circle2.r < circle1.r + 1e-10;\n    }\n    CircleUtilities.isCircle1CompletelyOverlappingCircle2 = isCircle1CompletelyOverlappingCircle2;\n    /**\n     * Tests whether a point lies within a given circle.\n     * @private\n     * @param {Highcharts.PositionObject} point\n     * The point to test for.\n     *\n     * @param {Highcharts.CircleObject} circle\n     * The circle to test if the point is within.\n     *\n     * @return {boolean}\n     * Returns true if the point is inside, false if outside.\n     */\n    function isPointInsideCircle(point, circle) {\n        return getDistanceBetweenPoints(point, circle) <= circle.r + 1e-10;\n    }\n    CircleUtilities.isPointInsideCircle = isPointInsideCircle;\n    /**\n     * Tests whether a point lies within a set of circles.\n     *\n     * @private\n     *\n     * @param {Highcharts.PositionObject} point\n     * The point to test.\n     *\n     * @param {Array<Highcharts.CircleObject>} circles\n     * The list of circles to test against.\n     *\n     * @return {boolean}\n     * Returns true if the point is inside all the circles, false if not.\n     */\n    function isPointInsideAllCircles(point, circles) {\n        return !circles.some(function (circle) {\n            return !isPointInsideCircle(point, circle);\n        });\n    }\n    CircleUtilities.isPointInsideAllCircles = isPointInsideAllCircles;\n    /**\n     * Tests whether a point lies outside a set of circles.\n     *\n     * TODO: add unit tests.\n     *\n     * @private\n     *\n     * @param {Highcharts.PositionObject} point\n     * The point to test.\n     *\n     * @param {Array<Highcharts.CircleObject>} circles\n     * The list of circles to test against.\n     *\n     * @return {boolean}\n     * Returns true if the point is outside all the circles, false if not.\n     */\n    function isPointOutsideAllCircles(point, circles) {\n        return !circles.some(function (circle) {\n            return isPointInsideCircle(point, circle);\n        });\n    }\n    CircleUtilities.isPointOutsideAllCircles = isPointOutsideAllCircles;\n    /**\n     * Calculates the points for the polygon of the intersection area between\n     * a set of circles.\n     *\n     * @private\n     *\n     * @param {Array<Highcharts.CircleObject>} circles\n     * List of circles to calculate polygon of.\n     *\n     * @return {Array<Highcharts.GeometryObject>}\n     * Return list of points in the intersection polygon.\n     */\n    function getCirclesIntersectionPolygon(circles) {\n        return getCirclesIntersectionPoints(circles)\n            .filter(function (p) {\n            return isPointInsideAllCircles(p, circles);\n        });\n    }\n    CircleUtilities.getCirclesIntersectionPolygon = getCirclesIntersectionPolygon;\n    /**\n     * Calculate the path for the area of overlap between a set of circles.\n     *\n     * @todo handle cases with only 1 or 0 arcs.\n     *\n     * @private\n     *\n     * @param {Array<Highcharts.CircleObject>} circles\n     * List of circles to calculate area of.\n     *\n     * @return {Highcharts.GeometryIntersectionObject|undefined}\n     * Returns the path for the area of overlap. Returns an empty string if\n     * there are no intersection between all the circles.\n     */\n    function getAreaOfIntersectionBetweenCircles(circles) {\n        let intersectionPoints = getCirclesIntersectionPolygon(circles), result;\n        if (intersectionPoints.length > 1) {\n            // Calculate the center of the intersection points.\n            const center = getCenterOfPoints(intersectionPoints);\n            intersectionPoints = intersectionPoints\n                // Calculate the angle between the center and the points.\n                .map(function (p) {\n                p.angle = getAngleBetweenPoints(center, p);\n                return p;\n            })\n                // Sort the points by the angle to the center.\n                .sort(function (a, b) {\n                return b.angle - a.angle;\n            });\n            const startPoint = intersectionPoints[intersectionPoints.length - 1];\n            const arcs = intersectionPoints\n                .reduce(function (data, p1) {\n                const { startPoint } = data, midPoint = getCenterOfPoints([startPoint, p1]);\n                // Calculate the arc from the intersection points and their\n                // circles.\n                const arc = p1.indexes\n                    // Filter out circles that are not included in both\n                    // intersection points.\n                    .filter(function (index) {\n                    return startPoint.indexes.indexOf(index) > -1;\n                })\n                    // Iterate the circles of the intersection points and\n                    // calculate arcs.\n                    .reduce(function (arc, index) {\n                    const circle = circles[index], angle1 = getAngleBetweenPoints(circle, p1), angle2 = getAngleBetweenPoints(circle, startPoint), angleDiff = angle2 - angle1 +\n                        (angle2 < angle1 ? 2 * Math.PI : 0), angle = angle2 - angleDiff / 2;\n                    let width = getDistanceBetweenPoints(midPoint, {\n                        x: circle.x + circle.r * Math.sin(angle),\n                        y: circle.y + circle.r * Math.cos(angle)\n                    });\n                    const { r } = circle;\n                    // Width can sometimes become to large due to\n                    // floating point errors\n                    if (width > r * 2) {\n                        width = r * 2;\n                    }\n                    // Get the arc with the smallest width.\n                    if (!arc || arc.width > width) {\n                        arc = {\n                            r,\n                            largeArc: width > r ? 1 : 0,\n                            width,\n                            x: p1.x,\n                            y: p1.y\n                        };\n                    }\n                    // Return the chosen arc.\n                    return arc;\n                }, null);\n                // If we find an arc then add it to the list and update p2.\n                if (arc) {\n                    const { r } = arc;\n                    data.arcs.push(['A', r, r, 0, arc.largeArc, 1, arc.x, arc.y]);\n                    data.startPoint = p1;\n                }\n                return data;\n            }, {\n                startPoint: startPoint,\n                arcs: []\n            }).arcs;\n            if (arcs.length === 0) {\n                // Empty\n            }\n            else if (arcs.length === 1) {\n                // Empty\n            }\n            else {\n                arcs.unshift(['M', startPoint.x, startPoint.y]);\n                result = {\n                    center,\n                    d: arcs\n                };\n            }\n        }\n        return result;\n    }\n    CircleUtilities.getAreaOfIntersectionBetweenCircles = getAreaOfIntersectionBetweenCircles;\n})(CircleUtilities || (CircleUtilities = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Geometry_CircleUtilities = (CircleUtilities);\n\n;// ./code/es-modules/Series/DrawPointUtilities.js\n/* *\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Handles the drawing of a component.\n * Can be used for any type of component that reserves the graphic property,\n * and provides a shouldDraw on its context.\n *\n * @private\n *\n * @todo add type checking.\n * @todo export this function to enable usage\n */\nfunction draw(point, params) {\n    const { animatableAttribs, onComplete, css, renderer } = params;\n    const animation = (point.series && point.series.chart.hasRendered) ?\n        // Chart-level animation on updates\n        void 0 :\n        // Series-level animation on new points\n        (point.series &&\n            point.series.options.animation);\n    let graphic = point.graphic;\n    params.attribs = {\n        ...params.attribs,\n        'class': point.getClassName()\n    } || {};\n    if ((point.shouldDraw())) {\n        if (!graphic) {\n            if (params.shapeType === 'text') {\n                graphic = renderer.text();\n            }\n            else if (params.shapeType === 'image') {\n                graphic = renderer.image(params.imageUrl || '')\n                    .attr(params.shapeArgs || {});\n            }\n            else {\n                graphic = renderer[params.shapeType](params.shapeArgs || {});\n            }\n            point.graphic = graphic;\n            graphic.add(params.group);\n        }\n        if (css) {\n            graphic.css(css);\n        }\n        graphic\n            .attr(params.attribs)\n            .animate(animatableAttribs, params.isNew ? false : animation, onComplete);\n    }\n    else if (graphic) {\n        const destroy = () => {\n            point.graphic = graphic = (graphic && graphic.destroy());\n            if (typeof onComplete === 'function') {\n                onComplete();\n            }\n        };\n        // Animate only runs complete callback if something was animated.\n        if (Object.keys(animatableAttribs).length) {\n            graphic.animate(animatableAttribs, void 0, () => destroy());\n        }\n        else {\n            destroy();\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst DrawPointUtilities = {\n    draw\n};\n/* harmony default export */ const Series_DrawPointUtilities = (DrawPointUtilities);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es-modules/Series/Venn/VennPoint.js\n/* *\n *\n *  Experimental Highcharts module which enables visualization of a Venn\n *  diagram.\n *\n *  (c) 2016-2024 Highsoft AS\n *  Authors: Jon Arild Nygard\n *\n *  Layout algorithm by Ben Frederickson:\n *  https://www.benfrederickson.com/better-venn-diagrams/\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { scatter: { prototype: { pointClass: ScatterPoint } } } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\nconst { isNumber } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\nclass VennPoint extends ScatterPoint {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    isValid() {\n        return isNumber(this.value);\n    }\n    shouldDraw() {\n        // Only draw points with single sets.\n        return !!this.shapeArgs;\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Venn_VennPoint = (VennPoint);\n\n;// ./code/es-modules/Series/Venn/VennSeriesDefaults.js\n/* *\n *\n *  Experimental Highcharts module which enables visualization of a Venn\n *  diagram.\n *\n *  (c) 2016-2024 Highsoft AS\n *  Authors: Jon Arild Nygard\n *\n *  Layout algorithm by Ben Frederickson:\n *  https://www.benfrederickson.com/better-venn-diagrams/\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * A Venn diagram displays all possible logical relations between a\n * collection of different sets. The sets are represented by circles, and\n * the relation between the sets are displayed by the overlap or lack of\n * overlap between them. The venn diagram is a special case of Euler\n * diagrams, which can also be displayed by this series type.\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n *         Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n *         Euler diagram\n * @sample {highcharts} highcharts/series-venn/point-legend/\n *         Venn diagram with a legend\n *\n * @extends      plotOptions.scatter\n * @excluding    connectEnds, connectNulls, cropThreshold, dragDrop,\n *               findNearestPointBy, getExtremesFromAll, jitter, label,\n *               linecap, lineWidth, linkedTo, marker, negativeColor,\n *               pointInterval, pointIntervalUnit, pointPlacement,\n *               pointStart, softThreshold, stacking, steps, threshold,\n *               xAxis, yAxis, zoneAxis, zones, dataSorting, boostThreshold,\n *               boostBlending\n * @product      highcharts\n * @requires     modules/venn\n * @optionparent plotOptions.venn\n */\nconst VennSeriesDefaults = {\n    borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    borderDashStyle: 'solid',\n    borderWidth: 1,\n    brighten: 0,\n    clip: false,\n    colorByPoint: true,\n    dataLabels: {\n        enabled: true,\n        verticalAlign: 'middle',\n        formatter: function () {\n            return this.point.name;\n        }\n    },\n    /**\n     * @default   true\n     * @extends   plotOptions.series.inactiveOtherPoints\n     * @private\n     */\n    inactiveOtherPoints: true,\n    /**\n     * @ignore-option\n     * @private\n     */\n    marker: false,\n    opacity: 0.75,\n    showInLegend: false,\n    /**\n     * @ignore-option\n     *\n     * @private\n     */\n    legendType: 'point',\n    states: {\n        /**\n         * @excluding halo\n         */\n        hover: {\n            opacity: 1,\n            borderColor: \"#333333\" /* Palette.neutralColor80 */\n        },\n        /**\n         * @excluding halo\n         */\n        select: {\n            color: \"#cccccc\" /* Palette.neutralColor20 */,\n            borderColor: \"#000000\" /* Palette.neutralColor100 */,\n            animation: false\n        },\n        inactive: {\n            opacity: 0.075\n        }\n    },\n    tooltip: {\n        pointFormat: '{point.name}: {point.value}'\n    },\n    legendSymbol: 'rectangle'\n};\n/**\n * A `venn` series. If the [type](#series.venn.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.venn\n * @excluding connectEnds, connectNulls, cropThreshold, dataParser, dataURL,\n *            findNearestPointBy, getExtremesFromAll, label, linecap, lineWidth,\n *            linkedTo, marker, negativeColor, pointInterval, pointIntervalUnit,\n *            pointPlacement, pointStart, softThreshold, stack, stacking, steps,\n *            threshold, xAxis, yAxis, zoneAxis, zones, dataSorting,\n *            boostThreshold, boostBlending\n * @product   highcharts\n * @requires  modules/venn\n * @apioption series.venn\n */\n/**\n * @type      {Array<*>}\n * @extends   series.scatter.data\n * @excluding marker, x, y\n * @product   highcharts\n * @apioption series.venn.data\n */\n/**\n * The name of the point. Used in data labels and tooltip. If name is not\n * defined then it will default to the joined values in\n * [sets](#series.venn.sets).\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n *         Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n *         Euler diagram\n *\n * @type      {string}\n * @since     7.0.0\n * @product   highcharts\n * @apioption series.venn.data.name\n */\n/**\n * The value of the point, resulting in a relative area of the circle, or area\n * of overlap between two sets in the venn or euler diagram.\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n *         Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n *         Euler diagram\n *\n * @type      {number}\n * @since     7.0.0\n * @product   highcharts\n * @apioption series.venn.data.value\n */\n/**\n * The set or sets the options will be applied to. If a single entry is defined,\n * then it will create a new set. If more than one entry is defined, then it\n * will define the overlap between the sets in the array.\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n *         Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n *         Euler diagram\n *\n * @type      {Array<string>}\n * @since     7.0.0\n * @product   highcharts\n * @apioption series.venn.data.sets\n */\n/**\n * @excluding halo\n * @apioption series.venn.states.hover\n */\n/**\n * @excluding halo\n * @apioption series.venn.states.select\n */\n''; // Detachs doclets above\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Venn_VennSeriesDefaults = (VennSeriesDefaults);\n\n;// ./code/es-modules/Series/Venn/VennUtils.js\n/* *\n *\n *  Experimental Highcharts module which enables visualization of a Venn\n *  diagram.\n *\n *  (c) 2016-2024 Highsoft AS\n *  Authors: Jon Arild Nygard\n *\n *  Layout algorithm by Ben Frederickson:\n *  https://www.benfrederickson.com/better-venn-diagrams/\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { getAreaOfCircle, getCircleCircleIntersection, getOverlapBetweenCircles: getOverlapBetweenCirclesByDistance, isPointInsideAllCircles, isPointInsideCircle, isPointOutsideAllCircles } = Geometry_CircleUtilities;\n\nconst { getDistanceBetweenPoints: VennUtils_getDistanceBetweenPoints } = Geometry_GeometryUtilities;\n\nconst { extend, isArray, isNumber: VennUtils_isNumber, isObject, isString } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Takes an array of relations and adds the properties `totalOverlap` and\n * `overlapping` to each set. The property `totalOverlap` is the sum of\n * value for each relation where this set is included. The property\n * `overlapping` is a map of how much this set is overlapping another set.\n * NOTE: This algorithm ignores relations consisting of more than 2 sets.\n * @private\n * @param {Array<Highcharts.VennRelationObject>} relations\n * The list of relations that should be sorted.\n * @return {Array<Highcharts.VennRelationObject>}\n * Returns the modified input relations with added properties `totalOverlap`\n * and `overlapping`.\n */\nfunction addOverlapToSets(relations) {\n    // Calculate the amount of overlap per set.\n    const mapOfIdToProps = {};\n    relations\n        // Filter out relations consisting of 2 sets.\n        .filter((relation) => (relation.sets.length === 2))\n        // Sum up the amount of overlap for each set.\n        .forEach((relation) => {\n        relation.sets.forEach((set, i, arr) => {\n            if (!isObject(mapOfIdToProps[set])) {\n                mapOfIdToProps[set] = {\n                    totalOverlap: 0,\n                    overlapping: {}\n                };\n            }\n            mapOfIdToProps[set] = {\n                totalOverlap: (mapOfIdToProps[set].totalOverlap || 0) +\n                    relation.value,\n                overlapping: {\n                    ...(mapOfIdToProps[set].overlapping || {}),\n                    [arr[1 - i]]: relation.value\n                }\n            };\n        });\n    });\n    relations\n        // Filter out single sets\n        .filter(isSet)\n        // Extend the set with the calculated properties.\n        .forEach((set) => {\n        const properties = mapOfIdToProps[set.sets[0]];\n        extend(set, properties);\n    });\n    // Returns the modified relations.\n    return relations;\n}\n/**\n * Finds the root of a given function. The root is the input value needed\n * for a function to return 0.\n *\n * See https://en.wikipedia.org/wiki/Bisection_method#Algorithm\n *\n * TODO: Add unit tests.\n *\n * @param {Function} f\n * The function to find the root of.\n * @param {number} a\n * The lowest number in the search range.\n * @param {number} b\n * The highest number in the search range.\n * @param {number} [tolerance=1e-10]\n * The allowed difference between the returned value and root.\n * @param {number} [maxIterations=100]\n * The maximum iterations allowed.\n * @return {number}\n * Root number.\n */\nfunction bisect(f, a, b, tolerance, maxIterations) {\n    const fA = f(a), fB = f(b), nMax = maxIterations || 100, tol = tolerance || 1e-10;\n    let delta = b - a, x, fX, n = 1;\n    if (a >= b) {\n        throw new Error('a must be smaller than b.');\n    }\n    else if (fA * fB > 0) {\n        throw new Error('f(a) and f(b) must have opposite signs.');\n    }\n    if (fA === 0) {\n        x = a;\n    }\n    else if (fB === 0) {\n        x = b;\n    }\n    else {\n        while (n++ <= nMax && fX !== 0 && delta > tol) {\n            delta = (b - a) / 2;\n            x = a + delta;\n            fX = f(x);\n            // Update low and high for next search interval.\n            if (fA * fX > 0) {\n                a = x;\n            }\n            else {\n                b = x;\n            }\n        }\n    }\n    return x;\n}\n/**\n * @private\n */\nfunction getCentroid(simplex) {\n    const arr = simplex.slice(0, -1), length = arr.length, result = [], sum = (data, point) => {\n        data.sum += point[data.i];\n        return data;\n    };\n    for (let i = 0; i < length; i++) {\n        result[i] = arr.reduce(sum, { sum: 0, i: i }).sum / length;\n    }\n    return result;\n}\n/**\n * Uses the bisection method to make a best guess of the ideal distance\n * between two circles too get the desired overlap.\n * Currently there is no known formula to calculate the distance from the\n * area of overlap, which makes the bisection method preferred.\n * @private\n * @param {number} r1\n * Radius of the first circle.\n * @param {number} r2\n * Radius of the second circle.\n * @param {number} overlap\n * The wanted overlap between the two circles.\n * @return {number}\n * Returns the distance needed to get the wanted overlap between the two\n * circles.\n */\nfunction getDistanceBetweenCirclesByOverlap(r1, r2, overlap) {\n    const maxDistance = r1 + r2;\n    let distance;\n    if (overlap <= 0) {\n        // If overlap is below or equal to zero, then there is no overlap.\n        distance = maxDistance;\n    }\n    else if (getAreaOfCircle(r1 < r2 ? r1 : r2) <= overlap) {\n        // When area of overlap is larger than the area of the smallest\n        // circle, then it is completely overlapping.\n        distance = 0;\n    }\n    else {\n        distance = bisect((x) => {\n            const actualOverlap = getOverlapBetweenCirclesByDistance(r1, r2, x);\n            // Return the difference between wanted and actual overlap.\n            return overlap - actualOverlap;\n        }, 0, maxDistance);\n    }\n    return distance;\n}\n/**\n * Finds the available width for a label, by taking the label position and\n * finding the largest distance, which is inside all internal circles, and\n * outside all external circles.\n *\n * @private\n * @param {Highcharts.PositionObject} pos\n * The x and y coordinate of the label.\n * @param {Array<Highcharts.CircleObject>} internal\n * Internal circles.\n * @param {Array<Highcharts.CircleObject>} external\n * External circles.\n * @return {number}\n * Returns available width for the label.\n */\nfunction getLabelWidth(pos, internal, external) {\n    const radius = internal.reduce((min, circle) => Math.min(circle.r, min), Infinity), \n    // Filter out external circles that are completely overlapping.\n    filteredExternals = external.filter((circle) => !isPointInsideCircle(pos, circle));\n    const findDistance = function (maxDistance, direction) {\n        return bisect((x) => {\n            const testPos = {\n                x: pos.x + (direction * x),\n                y: pos.y\n            }, isValid = (isPointInsideAllCircles(testPos, internal) &&\n                isPointOutsideAllCircles(testPos, filteredExternals));\n            // If the position is valid, then we want to move towards the\n            // max distance. If not, then we want to away from the max distance.\n            return -(maxDistance - x) + (isValid ? 0 : Number.MAX_VALUE);\n        }, 0, maxDistance);\n    };\n    // Find the smallest distance of left and right.\n    return Math.min(findDistance(radius, -1), findDistance(radius, 1)) * 2;\n}\n/**\n * Calculates a margin for a point based on the internal and external\n * circles. The margin describes if the point is well placed within the\n * internal circles, and away from the external.\n * @private\n * @todo add unit tests.\n * @param {Highcharts.PositionObject} point\n * The point to evaluate.\n * @param {Array<Highcharts.CircleObject>} internal\n * The internal circles.\n * @param {Array<Highcharts.CircleObject>} external\n * The external circles.\n * @return {number}\n * Returns the margin.\n */\nfunction getMarginFromCircles(point, internal, external) {\n    let margin = internal.reduce((margin, circle) => {\n        const m = circle.r - VennUtils_getDistanceBetweenPoints(point, circle);\n        return (m <= margin) ? m : margin;\n    }, Number.MAX_VALUE);\n    margin = external.reduce((margin, circle) => {\n        const m = VennUtils_getDistanceBetweenPoints(point, circle) - circle.r;\n        return (m <= margin) ? m : margin;\n    }, margin);\n    return margin;\n}\n/**\n * Calculates the area of overlap between a list of circles.\n * @private\n * @todo add support for calculating overlap between more than 2 circles.\n * @param {Array<Highcharts.CircleObject>} circles\n * List of circles with their given positions.\n * @return {number}\n * Returns the area of overlap between all the circles.\n */\nfunction getOverlapBetweenCircles(circles) {\n    let overlap = 0;\n    // When there is only two circles we can find the overlap by using their\n    // radiuses and the distance between them.\n    if (circles.length === 2) {\n        const circle1 = circles[0];\n        const circle2 = circles[1];\n        overlap = getOverlapBetweenCirclesByDistance(circle1.r, circle2.r, VennUtils_getDistanceBetweenPoints(circle1, circle2));\n    }\n    return overlap;\n}\n// eslint-disable-next-line require-jsdoc\n/**\n *\n */\nfunction isSet(x) {\n    return isArray(x.sets) && x.sets.length === 1;\n}\n// eslint-disable-next-line require-jsdoc\n/**\n *\n */\nfunction isValidRelation(x) {\n    const map = {};\n    return (isObject(x) &&\n        (VennUtils_isNumber(x.value) && x.value > -1) &&\n        (isArray(x.sets) && x.sets.length > 0) &&\n        !x.sets.some(function (set) {\n            let invalid = false;\n            if (!map[set] && isString(set)) {\n                map[set] = true;\n            }\n            else {\n                invalid = true;\n            }\n            return invalid;\n        }));\n}\n// eslint-disable-next-line require-jsdoc\n/**\n *\n */\nfunction isValidSet(x) {\n    return (isValidRelation(x) && isSet(x) && x.value > 0);\n}\n/**\n * Uses a greedy approach to position all the sets. Works well with a small\n * number of sets, and are in these cases a good choice aesthetically.\n * @private\n * @param {Array<object>} relations List of the overlap between two or more\n * sets, or the size of a single set.\n * @return {Array<object>} List of circles and their calculated positions.\n */\nfunction layoutGreedyVenn(relations) {\n    const positionedSets = [], mapOfIdToCircles = {};\n    // Define a circle for each set.\n    relations\n        .filter((relation) => (relation.sets.length === 1))\n        .forEach((relation) => {\n        mapOfIdToCircles[relation.sets[0]] = relation.circle = {\n            x: Number.MAX_VALUE,\n            y: Number.MAX_VALUE,\n            r: Math.sqrt(relation.value / Math.PI)\n        };\n    });\n    /**\n     * Takes a set and updates the position, and add the set to the list of\n     * positioned sets.\n     * @private\n     * @param {Object} set\n     * The set to add to its final position.\n     * @param {Object} coordinates\n     * The coordinates to position the set at.\n     */\n    const positionSet = (set, coordinates) => {\n        const circle = set.circle;\n        if (circle) {\n            circle.x = coordinates.x;\n            circle.y = coordinates.y;\n        }\n        positionedSets.push(set);\n    };\n    // Find overlap between sets. Ignore relations with more then 2 sets.\n    addOverlapToSets(relations);\n    // Sort sets by the sum of their size from large to small.\n    const sortedByOverlap = relations\n        .filter(isSet)\n        .sort(sortByTotalOverlap);\n    // Position the most overlapped set at 0,0.\n    positionSet(sortedByOverlap.shift(), { x: 0, y: 0 });\n    const relationsWithTwoSets = relations.filter((x) => (x.sets.length === 2));\n    // Iterate and position the remaining sets.\n    for (const set of sortedByOverlap) {\n        const circle = set.circle;\n        if (!circle) {\n            continue;\n        }\n        const radius = circle.r, overlapping = set.overlapping;\n        const bestPosition = positionedSets.reduce((best, positionedSet, i) => {\n            const positionedCircle = positionedSet.circle;\n            if (!positionedCircle || !overlapping) {\n                return best;\n            }\n            const overlap = overlapping[positionedSet.sets[0]];\n            // Calculate the distance between the sets to get the\n            // correct overlap\n            const distance = getDistanceBetweenCirclesByOverlap(radius, positionedCircle.r, overlap);\n            // Create a list of possible coordinates calculated from\n            // distance.\n            let possibleCoordinates = [\n                { x: positionedCircle.x + distance, y: positionedCircle.y },\n                { x: positionedCircle.x - distance, y: positionedCircle.y },\n                { x: positionedCircle.x, y: positionedCircle.y + distance },\n                { x: positionedCircle.x, y: positionedCircle.y - distance }\n            ];\n            // If there are more circles overlapping, then add the\n            // intersection points as possible positions.\n            for (const positionedSet2 of positionedSets.slice(i + 1)) {\n                const positionedCircle2 = positionedSet2.circle, overlap2 = overlapping[positionedSet2.sets[0]];\n                if (!positionedCircle2) {\n                    continue;\n                }\n                const distance2 = getDistanceBetweenCirclesByOverlap(radius, positionedCircle2.r, overlap2);\n                // Add intersections to list of coordinates.\n                possibleCoordinates = possibleCoordinates.concat(getCircleCircleIntersection({\n                    x: positionedCircle.x,\n                    y: positionedCircle.y,\n                    r: distance\n                }, {\n                    x: positionedCircle2.x,\n                    y: positionedCircle2.y,\n                    r: distance2\n                }));\n            }\n            // Iterate all suggested coordinates and find the best one.\n            for (const coordinates of possibleCoordinates) {\n                circle.x = coordinates.x;\n                circle.y = coordinates.y;\n                // Calculate loss for the suggested coordinates.\n                const currentLoss = loss(mapOfIdToCircles, relationsWithTwoSets);\n                // If the loss is better, then use these new coordinates\n                if (currentLoss < best.loss) {\n                    best.loss = currentLoss;\n                    best.coordinates = coordinates;\n                }\n            }\n            // Return resulting coordinates.\n            return best;\n        }, {\n            loss: Number.MAX_VALUE,\n            coordinates: void 0\n        });\n        // Add the set to its final position.\n        positionSet(set, bestPosition.coordinates);\n    }\n    // Return the positions of each set.\n    return mapOfIdToCircles;\n}\n/**\n * Calculates the difference between the desired overlap and the actual\n * overlap between two circles.\n * @private\n * @param {Dictionary<Highcharts.CircleObject>} mapOfIdToCircle\n * Map from id to circle.\n * @param {Array<Highcharts.VennRelationObject>} relations\n * List of relations to calculate the loss of.\n * @return {number}\n * Returns the loss between positions of the circles for the given\n * relations.\n */\nfunction loss(mapOfIdToCircle, relations) {\n    const precision = 10e10;\n    // Iterate all the relations and calculate their individual loss.\n    return relations.reduce(function (totalLoss, relation) {\n        let loss = 0;\n        if (relation.sets.length > 1) {\n            const wantedOverlap = relation.value;\n            // Calculate the actual overlap between the sets.\n            const actualOverlap = getOverlapBetweenCircles(\n            // Get the circles for the given sets.\n            relation.sets.map(function (set) {\n                return mapOfIdToCircle[set];\n            }));\n            const diff = wantedOverlap - actualOverlap;\n            loss = Math.round((diff * diff) * precision) / precision;\n        }\n        // Add calculated loss to the sum.\n        return totalLoss + loss;\n    }, 0);\n}\n/**\n * Finds an optimal position for a given point.\n * @todo add unit tests.\n * @todo add constraints to optimize the algorithm.\n * @private\n * @param {Highcharts.NelderMeadTestFunction} fn\n *        The function to test a point.\n * @param {Highcharts.NelderMeadPointArray} initial\n *        The initial point to optimize.\n * @return {Highcharts.NelderMeadPointArray}\n *         Returns the optimized position of a point.\n */\nfunction nelderMead(fn, initial) {\n    const maxIterations = 100, sortByFx = function (a, b) {\n        return a.fx - b.fx;\n    }, pRef = 1, // Reflection parameter\n    pExp = 2, // Expansion parameter\n    pCon = -0.5, // Contraction parameter\n    pOCon = pCon * pRef, // Outwards contraction parameter\n    pShrink = 0.5; // Shrink parameter\n    /**\n     * @private\n     */\n    const weightedSum = (weight1, v1, weight2, v2) => v1.map((x, i) => weight1 * x + weight2 * v2[i]);\n    /**\n     * @private\n     */\n    const getSimplex = (initial) => {\n        const n = initial.length, simplex = new Array(n + 1);\n        // Initial point to the simplex.\n        simplex[0] = initial;\n        simplex[0].fx = fn(initial);\n        // Create a set of extra points based on the initial.\n        for (let i = 0; i < n; ++i) {\n            const point = initial.slice();\n            point[i] = point[i] ? point[i] * 1.05 : 0.001;\n            point.fx = fn(point);\n            simplex[i + 1] = point;\n        }\n        return simplex;\n    };\n    const updateSimplex = (simplex, point) => {\n        point.fx = fn(point);\n        simplex[simplex.length - 1] = point;\n        return simplex;\n    };\n    const shrinkSimplex = (simplex) => {\n        const best = simplex[0];\n        return simplex.map((point) => {\n            const p = weightedSum(1 - pShrink, best, pShrink, point);\n            p.fx = fn(p);\n            return p;\n        });\n    };\n    const getPoint = (centroid, worst, a, b) => {\n        const point = weightedSum(a, centroid, b, worst);\n        point.fx = fn(point);\n        return point;\n    };\n    // Create a simplex\n    let simplex = getSimplex(initial);\n    // Iterate from 0 to max iterations\n    for (let i = 0; i < maxIterations; i++) {\n        // Sort the simplex\n        simplex.sort(sortByFx);\n        // Create a centroid from the simplex\n        const worst = simplex[simplex.length - 1];\n        const centroid = getCentroid(simplex);\n        // Calculate the reflected point.\n        const reflected = getPoint(centroid, worst, 1 + pRef, -pRef);\n        if (reflected.fx < simplex[0].fx) {\n            // If reflected point is the best, then possibly expand.\n            const expanded = getPoint(centroid, worst, 1 + pExp, -pExp);\n            simplex = updateSimplex(simplex, (expanded.fx < reflected.fx) ? expanded : reflected);\n        }\n        else if (reflected.fx >= simplex[simplex.length - 2].fx) {\n            // If the reflected point is worse than the second worse, then\n            // contract.\n            let contracted;\n            if (reflected.fx > worst.fx) {\n                // If the reflected is worse than the worst point, do a\n                // contraction\n                contracted = getPoint(centroid, worst, 1 + pCon, -pCon);\n                if (contracted.fx < worst.fx) {\n                    simplex = updateSimplex(simplex, contracted);\n                }\n                else {\n                    simplex = shrinkSimplex(simplex);\n                }\n            }\n            else {\n                // Otherwise do an outwards contraction\n                contracted = getPoint(centroid, worst, 1 - pOCon, pOCon);\n                if (contracted.fx < reflected.fx) {\n                    simplex = updateSimplex(simplex, contracted);\n                }\n                else {\n                    simplex = shrinkSimplex(simplex);\n                }\n            }\n        }\n        else {\n            simplex = updateSimplex(simplex, reflected);\n        }\n    }\n    return simplex[0];\n}\n/**\n * Prepares the venn data so that it is usable for the layout function.\n * Filter out sets, or intersections that includes sets, that are missing in\n * the data or has (value < 1). Adds missing relations between sets in the\n * data as value = 0.\n * @private\n * @param {Array<object>} data The raw input data.\n * @return {Array<object>} Returns an array of valid venn data.\n */\nfunction processVennData(data, splitter) {\n    const d = isArray(data) ? data : [];\n    const validSets = d\n        .reduce(function (arr, x) {\n        // Check if x is a valid set, and that it is not an duplicate.\n        if (x.sets && isValidSet(x) && arr.indexOf(x.sets[0]) === -1) {\n            arr.push(x.sets[0]);\n        }\n        return arr;\n    }, [])\n        .sort();\n    const mapOfIdToRelation = d.reduce(function (mapOfIdToRelation, relation) {\n        if (relation.sets &&\n            isValidRelation(relation) &&\n            !relation.sets.some(function (set) {\n                return validSets.indexOf(set) === -1;\n            })) {\n            mapOfIdToRelation[relation.sets.sort().join(splitter)] = {\n                sets: relation.sets,\n                value: relation.value || 0\n            };\n        }\n        return mapOfIdToRelation;\n    }, {});\n    validSets.reduce(function (combinations, set, i, arr) {\n        const remaining = arr.slice(i + 1);\n        remaining.forEach(function (set2) {\n            combinations.push(set + splitter + set2);\n        });\n        return combinations;\n    }, []).forEach(function (combination) {\n        if (!mapOfIdToRelation[combination]) {\n            const obj = {\n                sets: combination.split(splitter),\n                value: 0\n            };\n            mapOfIdToRelation[combination] = obj;\n        }\n    });\n    // Transform map into array.\n    return Object\n        .keys(mapOfIdToRelation)\n        .map(function (id) {\n        return mapOfIdToRelation[id];\n    });\n}\n/**\n * Takes two sets and finds the one with the largest total overlap.\n * @private\n * @param {Object} a\n * The first set to compare.\n * @param {Object} b\n * The second set to compare.\n * @return {number}\n * Returns 0 if a and b are equal, <0 if a is greater, >0 if b is greater.\n */\nfunction sortByTotalOverlap(a, b) {\n    if (typeof b.totalOverlap !== 'undefined' &&\n        typeof a.totalOverlap !== 'undefined') {\n        return b.totalOverlap - a.totalOverlap;\n    }\n    return NaN;\n}\n/* *\n *\n *  Default Export\n *\n * */\nconst VennUtils = {\n    geometry: Geometry_GeometryUtilities,\n    geometryCircles: Geometry_CircleUtilities,\n    addOverlapToSets,\n    getCentroid,\n    getDistanceBetweenCirclesByOverlap,\n    getLabelWidth,\n    getMarginFromCircles,\n    isSet,\n    layoutGreedyVenn,\n    loss,\n    nelderMead,\n    processVennData,\n    sortByTotalOverlap\n};\n/* harmony default export */ const Venn_VennUtils = (VennUtils);\n\n;// ./code/es-modules/Series/Venn/VennSeries.js\n/* *\n *\n *  Experimental Highcharts module which enables visualization of a Venn\n *  diagram.\n *\n *  (c) 2016-2024 Highsoft AS\n *  Authors: Jon Arild Nygard\n *\n *  Layout algorithm by Ben Frederickson:\n *  https://www.benfrederickson.com/better-venn-diagrams/\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nconst { animObject } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n\nconst { parse: color } = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default());\n\nconst { getAreaOfIntersectionBetweenCircles, getCirclesIntersectionPolygon, isCircle1CompletelyOverlappingCircle2, isPointInsideAllCircles: VennSeries_isPointInsideAllCircles, isPointOutsideAllCircles: VennSeries_isPointOutsideAllCircles } = Geometry_CircleUtilities;\n\n\nconst { getCenterOfPoints: VennSeries_getCenterOfPoints } = Geometry_GeometryUtilities;\n\nconst { scatter: ScatterSeries } = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n\n\n\n\nconst { addEvent, extend: VennSeries_extend, isArray: VennSeries_isArray, isNumber: VennSeries_isNumber, isObject: VennSeries_isObject, merge } = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.venn\n *\n * @augments Highcharts.Series\n */\nclass VennSeries extends ScatterSeries {\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * Finds the optimal label position by looking for a position that has a low\n     * distance from the internal circles, and as large possible distance to the\n     * external circles.\n     * @private\n     * @todo Optimize the intial position.\n     * @todo Add unit tests.\n     * @param {Array<Highcharts.CircleObject>} internal\n     * Internal circles.\n     * @param {Array<Highcharts.CircleObject>} external\n     * External circles.\n     * @return {Highcharts.PositionObject}\n     * Returns the found position.\n     */\n    static getLabelPosition(internal, external) {\n        // Get the best label position within the internal circles.\n        let best = internal.reduce((best, circle) => {\n            const d = circle.r / 2;\n            // Give a set of points with the circle to evaluate as the best\n            // label position.\n            return [\n                { x: circle.x, y: circle.y },\n                { x: circle.x + d, y: circle.y },\n                { x: circle.x - d, y: circle.y },\n                { x: circle.x, y: circle.y + d },\n                { x: circle.x, y: circle.y - d }\n            ]\n                // Iterate the given points and return the one with the\n                // largest margin.\n                .reduce((best, point) => {\n                const margin = Venn_VennUtils.getMarginFromCircles(point, internal, external);\n                // If the margin better than the current best, then\n                // update sbest.\n                if (best.margin < margin) {\n                    best.point = point;\n                    best.margin = margin;\n                }\n                return best;\n            }, best);\n        }, {\n            point: void 0,\n            margin: -Number.MAX_VALUE\n        }).point;\n        // Use nelder mead to optimize the initial label position.\n        const optimal = Venn_VennUtils.nelderMead((p) => -(Venn_VennUtils.getMarginFromCircles({ x: p[0], y: p[1] }, internal, external)), [\n            best.x,\n            best.y\n        ]);\n        // Update best to be the point which was found to have the best margin.\n        best = {\n            x: optimal[0],\n            y: optimal[1]\n        };\n        if (!(VennSeries_isPointInsideAllCircles(best, internal) &&\n            VennSeries_isPointOutsideAllCircles(best, external))) {\n            // If point was either outside one of the internal, or inside one of\n            // the external, then it was invalid and should use a fallback.\n            if (internal.length > 1) {\n                best = VennSeries_getCenterOfPoints(getCirclesIntersectionPolygon(internal));\n            }\n            else {\n                best = {\n                    x: internal[0].x,\n                    y: internal[0].y\n                };\n            }\n        }\n        // Return the best point.\n        return best;\n    }\n    /**\n     * Calculates data label values for a given relations object.\n     *\n     * @private\n     * @todo add unit tests\n     * @param {Highcharts.VennRelationObject} relation A relations object.\n     * @param {Array<Highcharts.VennRelationObject>} setRelations The list of\n     * relations that is a set.\n     * @return {Highcharts.VennLabelValuesObject}\n     * Returns an object containing position and width of the label.\n     */\n    static getLabelValues(relation, setRelations) {\n        const sets = relation.sets;\n        // Create a list of internal and external circles.\n        const data = setRelations.reduce((data, set) => {\n            // If the set exists in this relation, then it is internal,\n            // otherwise it will be external.\n            const isInternal = sets.indexOf(set.sets[0]) > -1;\n            const property = isInternal ? 'internal' : 'external';\n            // Add the circle to the list.\n            if (set.circle) {\n                data[property].push(set.circle);\n            }\n            return data;\n        }, {\n            internal: [],\n            external: []\n        });\n        // Filter out external circles that are completely overlapping all\n        // internal\n        data.external = data.external.filter((externalCircle) => data.internal.some((internalCircle) => !isCircle1CompletelyOverlappingCircle2(externalCircle, internalCircle)));\n        // Calculate the label position.\n        const position = VennSeries.getLabelPosition(data.internal, data.external);\n        // Calculate the label width\n        const width = Venn_VennUtils.getLabelWidth(position, data.internal, data.external);\n        return {\n            position,\n            width\n        };\n    }\n    /**\n     * Calculates the positions, and the label values of all the sets in the\n     * venn diagram.\n     *\n     * @private\n     * @todo Add support for constrained MDS.\n     * @param {Array<Highchats.VennRelationObject>} relations\n     * List of the overlap between two or more sets, or the size of a single\n     * set.\n     * @return {Highcharts.Dictionary<*>}\n     * List of circles and their calculated positions.\n     */\n    static layout(relations) {\n        const mapOfIdToShape = {};\n        const mapOfIdToLabelValues = {};\n        // Calculate best initial positions by using greedy layout.\n        if (relations.length > 0) {\n            const mapOfIdToCircles = Venn_VennUtils.layoutGreedyVenn(relations);\n            const setRelations = relations.filter(Venn_VennUtils.isSet);\n            for (const relation of relations) {\n                const sets = relation.sets;\n                const id = sets.join();\n                // Get shape from map of circles, or calculate intersection.\n                const shape = Venn_VennUtils.isSet(relation) ?\n                    mapOfIdToCircles[id] :\n                    getAreaOfIntersectionBetweenCircles(sets.map((set) => mapOfIdToCircles[set]));\n                // Calculate label values if the set has a shape\n                if (shape) {\n                    mapOfIdToShape[id] = shape;\n                    mapOfIdToLabelValues[id] = VennSeries.getLabelValues(relation, setRelations);\n                }\n            }\n        }\n        return { mapOfIdToShape, mapOfIdToLabelValues };\n    }\n    /**\n     * Calculates the proper scale to fit the cloud inside the plotting area.\n     * @private\n     * @todo add unit test\n     * @param {number} targetWidth\n     * Width of target area.\n     * @param {number} targetHeight\n     * Height of target area.\n     * @param {Highcharts.PolygonBoxObject} field\n     * The playing field.\n     * @return {Highcharts.Dictionary<number>}\n     * Returns the value to scale the playing field up to the size of the target\n     * area, and center of x and y.\n     */\n    static getScale(targetWidth, targetHeight, field) {\n        const height = field.bottom - field.top, // Top is smaller than bottom\n        width = field.right - field.left, scaleX = width > 0 ? 1 / width * targetWidth : 1, scaleY = height > 0 ? 1 / height * targetHeight : 1, adjustX = (field.right + field.left) / 2, adjustY = (field.top + field.bottom) / 2, scale = Math.min(scaleX, scaleY);\n        return {\n            scale: scale,\n            centerX: targetWidth / 2 - adjustX * scale,\n            centerY: targetHeight / 2 - adjustY * scale\n        };\n    }\n    /**\n     * If a circle is outside a give field, then the boundaries of the field is\n     * adjusted accordingly. Modifies the field object which is passed as the\n     * first parameter.\n     * @private\n     * @todo NOTE: Copied from wordcloud, can probably be unified.\n     * @param {Highcharts.PolygonBoxObject} field\n     * The bounding box of a playing field.\n     * @param {Highcharts.CircleObject} circle\n     * The bounding box for a placed point.\n     * @return {Highcharts.PolygonBoxObject}\n     * Returns a modified field object.\n     */\n    static updateFieldBoundaries(field, circle) {\n        const left = circle.x - circle.r, right = circle.x + circle.r, bottom = circle.y + circle.r, top = circle.y - circle.r;\n        // TODO improve type checking.\n        if (!VennSeries_isNumber(field.left) || field.left > left) {\n            field.left = left;\n        }\n        if (!VennSeries_isNumber(field.right) || field.right < right) {\n            field.right = right;\n        }\n        if (!VennSeries_isNumber(field.top) || field.top > top) {\n            field.top = top;\n        }\n        if (!VennSeries_isNumber(field.bottom) || field.bottom < bottom) {\n            field.bottom = bottom;\n        }\n        return field;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    animate(init) {\n        if (!init) {\n            const series = this, animOptions = animObject(series.options.animation);\n            for (const point of series.points) {\n                const args = point.shapeArgs;\n                if (point.graphic && args) {\n                    const attr = {}, animate = {};\n                    if (args.d) {\n                        // If shape is a path, then animate opacity.\n                        attr.opacity = 0.001;\n                    }\n                    else {\n                        // If shape is a circle, then animate radius.\n                        attr.r = 0;\n                        animate.r = args.r;\n                    }\n                    point.graphic\n                        .attr(attr)\n                        .animate(animate, animOptions);\n                    // If shape is path, then fade it in after the circles\n                    // animation\n                    if (args.d) {\n                        setTimeout(() => {\n                            if (point && point.graphic) {\n                                point.graphic.animate({\n                                    opacity: 1\n                                });\n                            }\n                        }, animOptions.duration);\n                    }\n                }\n            }\n        }\n    }\n    /**\n     * Draw the graphics for each point.\n     * @private\n     */\n    drawPoints() {\n        const series = this, \n        // Series properties\n        chart = series.chart, group = series.group, points = series.points || [], \n        // Chart properties\n        renderer = chart.renderer;\n        // Iterate all points and calculate and draw their graphics.\n        for (const point of points) {\n            const attribs = {\n                zIndex: VennSeries_isArray(point.sets) ? point.sets.length : 0\n            }, shapeArgs = point.shapeArgs;\n            // Add point attribs\n            if (!chart.styledMode) {\n                VennSeries_extend(attribs, series.pointAttribs(point, point.state));\n            }\n            // Draw the point graphic.\n            Series_DrawPointUtilities.draw(point, {\n                isNew: !point.graphic,\n                animatableAttribs: shapeArgs,\n                attribs: attribs,\n                group: group,\n                renderer: renderer,\n                shapeType: shapeArgs && shapeArgs.d ? 'path' : 'circle'\n            });\n        }\n    }\n    init() {\n        ScatterSeries.prototype.init.apply(this, arguments);\n        // Venn's opacity is a different option from other series\n        delete this.opacity;\n    }\n    /**\n     * Calculates the style attributes for a point. The attributes can vary\n     * depending on the state of the point.\n     * @private\n     * @param {Highcharts.Point} point\n     * The point which will get the resulting attributes.\n     * @param {string} [state]\n     * The state of the point.\n     * @return {Highcharts.SVGAttributes}\n     * Returns the calculated attributes.\n     */\n    pointAttribs(point, state) {\n        const series = this, seriesOptions = series.options || {}, pointOptions = point && point.options || {}, stateOptions = (state && seriesOptions.states[state]) || {}, options = merge(seriesOptions, { color: point && point.color }, pointOptions, stateOptions);\n        // Return resulting values for the attributes.\n        return {\n            'fill': color(options.color)\n                .brighten(options.brightness)\n                .get(),\n            // Set opacity directly to the SVG element, not to pattern #14372.\n            opacity: options.opacity,\n            'stroke': options.borderColor,\n            'stroke-width': options.borderWidth,\n            'dashstyle': options.borderDashStyle\n        };\n    }\n    translate() {\n        const chart = this.chart;\n        this.dataTable.modified = this.dataTable;\n        this.generatePoints();\n        // Process the data before passing it into the layout function.\n        const relations = Venn_VennUtils.processVennData(this.options.data, VennSeries.splitter);\n        // Calculate the positions of each circle.\n        const { mapOfIdToShape, mapOfIdToLabelValues } = VennSeries.layout(relations);\n        // Calculate the scale, and center of the plot area.\n        const field = Object.keys(mapOfIdToShape)\n            .filter((key) => {\n            const shape = mapOfIdToShape[key];\n            return shape && VennSeries_isNumber(shape.r);\n        })\n            .reduce((field, key) => VennSeries.updateFieldBoundaries(field, mapOfIdToShape[key]), {\n            top: 0,\n            bottom: 0,\n            left: 0,\n            right: 0\n        }), scaling = VennSeries.getScale(chart.plotWidth, chart.plotHeight, field), scale = scaling.scale, centerX = scaling.centerX, centerY = scaling.centerY;\n        // Iterate all points and calculate and draw their graphics.\n        for (const point of this.points) {\n            const sets = VennSeries_isArray(point.sets) ? point.sets : [], id = sets.join(), shape = mapOfIdToShape[id], dataLabelValues = mapOfIdToLabelValues[id] || {}, dlOptions = point.options && point.options.dataLabels;\n            let shapeArgs, dataLabelWidth = dataLabelValues.width, dataLabelPosition = dataLabelValues.position;\n            if (shape) {\n                if (shape.r) {\n                    shapeArgs = {\n                        x: centerX + shape.x * scale,\n                        y: centerY + shape.y * scale,\n                        r: shape.r * scale\n                    };\n                }\n                else if (shape.d) {\n                    const d = shape.d;\n                    d.forEach((seg) => {\n                        if (seg[0] === 'M') {\n                            seg[1] = centerX + seg[1] * scale;\n                            seg[2] = centerY + seg[2] * scale;\n                        }\n                        else if (seg[0] === 'A') {\n                            seg[1] = seg[1] * scale;\n                            seg[2] = seg[2] * scale;\n                            seg[6] = centerX + seg[6] * scale;\n                            seg[7] = centerY + seg[7] * scale;\n                        }\n                    });\n                    shapeArgs = { d };\n                }\n                // Scale the position for the data label.\n                if (dataLabelPosition) {\n                    dataLabelPosition.x = centerX + dataLabelPosition.x * scale;\n                    dataLabelPosition.y = centerY + dataLabelPosition.y * scale;\n                }\n                else {\n                    dataLabelPosition = {};\n                }\n                if (VennSeries_isNumber(dataLabelWidth)) {\n                    dataLabelWidth = Math.round(dataLabelWidth * scale);\n                }\n            }\n            point.shapeArgs = shapeArgs;\n            // Placement for the data labels\n            if (dataLabelPosition && shapeArgs) {\n                point.plotX = dataLabelPosition.x;\n                point.plotY = dataLabelPosition.y;\n            }\n            // Add width for the data label\n            if (dataLabelWidth && shapeArgs) {\n                point.dlOptions = merge(true, {\n                    style: {\n                        width: dataLabelWidth\n                    }\n                }, VennSeries_isObject(dlOptions, true) ? dlOptions : void 0);\n            }\n            // Set name for usage in tooltip and in data label.\n            point.name = point.options.name || sets.join('∩');\n        }\n    }\n}\n/* *\n *\n *  Static Properties\n *\n * */\nVennSeries.splitter = 'highcharts-split';\nVennSeries.defaultOptions = merge(ScatterSeries.defaultOptions, Venn_VennSeriesDefaults);\nVennSeries_extend(VennSeries.prototype, {\n    axisTypes: [],\n    directTouch: true,\n    isCartesian: false,\n    pointArrayMap: ['value'],\n    pointClass: Venn_VennPoint,\n    utils: Venn_VennUtils\n});\n// Modify final series options.\naddEvent(VennSeries, 'afterSetOptions', function (e) {\n    const options = e.options, states = options.states || {};\n    if (this.is('venn')) {\n        // Explicitly disable all halo options.\n        for (const state of Object.keys(states)) {\n            states[state].halo = false;\n        }\n    }\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('venn', VennSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ const Venn_VennSeries = ((/* unused pure expression or super */ null && (VennSeries)));\n\n;// ./code/es-modules/masters/modules/venn.src.js\n\n\n\n\n/* harmony default export */ const venn_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","define","amd","amd1","window","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","GeometryUtilities","CircleUtilities","__webpack_modules__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","venn_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","getCenterOfPoints","points","sum","reduce","point","x","y","length","getDistanceBetweenPoints","p1","p2","Math","sqrt","pow","getAngleBetweenPoints","atan2","pointInPolygon","polygon","len","i","j","inside","x1","y1","x2","y2","Geometry_GeometryUtilities","round","decimals","getAreaOfCircle","r","Error","PI","getCircularSegmentArea","h","acos","getCircleCircleIntersection","c1","c2","r1","r2","abs","r1Square","x0","y0","rx","ry","getCirclesIntersectionPoints","circles","arr","additional","slice","indexes","concat","map","p","isPointInsideCircle","circle","isPointInsideAllCircles","some","getCirclesIntersectionPolygon","filter","getOverlapBetweenCircles","overlap","d1","isCircle1CompletelyOverlappingCircle2","circle1","circle2","isPointOutsideAllCircles","getAreaOfIntersectionBetweenCircles","intersectionPoints","result","center","startPoint","angle","sort","b","arcs","data","midPoint","arc","index","indexOf","angle1","angle2","angleDiff","width","sin","cos","largeArc","push","unshift","Geometry_CircleUtilities","Series_DrawPointUtilities","draw","params","animatableAttribs","onComplete","css","renderer","animation","series","chart","hasRendered","options","graphic","attribs","getClassName","shouldDraw","shapeType","text","image","imageUrl","attr","shapeArgs","add","group","animate","isNew","destroy","keys","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","scatter","pointClass","ScatterPoint","seriesTypes","isNumber","getOverlapBetweenCirclesByDistance","VennUtils_getDistanceBetweenPoints","extend","isArray","VennUtils_isNumber","isObject","isString","addOverlapToSets","relations","mapOfIdToProps","relation","sets","forEach","set","totalOverlap","overlapping","value","isSet","properties","bisect","f","tolerance","maxIterations","fA","fB","nMax","tol","delta","fX","getCentroid","simplex","getDistanceBetweenCirclesByOverlap","maxDistance","isValidRelation","invalid","loss","mapOfIdToCircle","totalLoss","diff","wantedOverlap","sortByTotalOverlap","NaN","Venn_VennUtils","geometry","geometryCircles","getLabelWidth","pos","internal","external","radius","min","Infinity","filteredExternals","findDistance","direction","testPos","isValid","Number","MAX_VALUE","getMarginFromCircles","margin","m","layoutGreedyVenn","positionedSets","mapOfIdToCircles","positionSet","coordinates","sortedByOverlap","shift","relationsWithTwoSets","bestPosition","best","positionedSet","positionedCircle","distance","possibleCoordinates","positionedSet2","positionedCircle2","overlap2","distance2","currentLoss","nelderMead","fn","initial","sortByFx","fx","weightedSum","weight1","v1","weight2","v2","updateSimplex","shrinkSimplex","getPoint","centroid","worst","getSimplex","Array","reflected","expanded","contracted","pCon","processVennData","splitter","validSets","mapOfIdToRelation","join","combinations","remaining","set2","combination","split","id","animObject","parse","color","VennSeries_isPointInsideAllCircles","VennSeries_isPointOutsideAllCircles","VennSeries_getCenterOfPoints","ScatterSeries","addEvent","VennSeries_extend","VennSeries_isArray","VennSeries_isNumber","VennSeries_isObject","merge","VennSeries","getLabelPosition","optimal","getLabelValues","setRelations","isInternal","externalCircle","internalCircle","position","layout","mapOfIdToShape","mapOfIdToLabelValues","shape","getScale","targetWidth","targetHeight","field","height","bottom","top","right","left","adjustX","adjustY","scale","centerX","centerY","updateFieldBoundaries","init","animOptions","args","opacity","setTimeout","duration","drawPoints","zIndex","styledMode","pointAttribs","state","apply","arguments","seriesOptions","pointOptions","stateOptions","states","brighten","brightness","borderColor","borderWidth","borderDashStyle","translate","dataTable","modified","generatePoints","scaling","plotWidth","plotHeight","dataLabelValues","dlOptions","dataLabels","dataLabelWidth","dataLabelPosition","seg","plotX","plotY","style","name","defaultOptions","clip","colorByPoint","enabled","verticalAlign","formatter","inactiveOtherPoints","marker","showInLegend","legendType","hover","select","inactive","tooltip","pointFormat","legendSymbol","axisTypes","directTouch","isCartesian","pointArrayMap","utils","e","is","halo","registerSeriesType"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox